Scala operatör
Scala için herhangi bir sebep yok destek artırmak için operatör varsayılan olarak ilkel türler var mı? Örneğin, yazabilirsiniz:
var i=0
i
Teşekkürler
CEVAP
Craig'24 *s*, ama anlamı daha güçlü bir şekilde yapılmış olması gerekiyor.
Orada hiçbir "ilkel
Int
o zaman bunu yapabilirsiniz," ... Bir kullanıcı yapımıComplex
(örneğin).var x = 1 // or Complex(1, 0)
x
Nasıl sınıf
Complex
10 *uygulamak mı? ,Int
gibi nesne değişmez olduğunu varsayarsak, o zaman
Yeni bir dil özelliği gerektirir. Örneğin, diyelim ki assign
bir anahtar kelime oluşturmak demek. Tür imza olarak değiştirilmesi,
olduğunu belirtmek gerekirdönüyorComplex
amaatamamevcut nesne tutan her neyse. Programcılar ad izinsiz değil, Scala ruhu, hadi @
ile yazın isime göre bunları yaptığımızı düşünelim.
O zaman bu gibi olabilir:
case class Complex(real: Double = 0, imaginary: Double = 0) {
def : @Complex = {
assign copy(real = real 1)
// instead of return copy(real = real 1)
}
Bir sonraki sorun sonek operatörleri Scala kuralları ile berbattır. Örneğin:
def inc(x: Int) = {
x
x
}
Scala kuralları nedeniyle, aynı şey
def inc(x: Int) = { x x }
Niyet değildi. Şimdi, Scala ayrıcalıkları akan bir stil: obj method param method param method param ...
. İyi fonksiyonel programlama object method parameter
C /Java geleneksel sözdizimi kavramı sonuç almak için birden fazla fonksiyonları ile bir giriş ardışık karıştırır. Bu tarz son zamanlarda "akıcı arayüzleri" de. adı olmuştur
Sorun, bu tarz ayrıcalık, sonek operatörleri (ve önek olanlar, Scala zar zor ama yine de var) sakat. Yani, sonunda, Scala olurdu büyük değişiklikler, ve bunu mümkün olacaktır ölçmek için zerafet C/Java artırma ve azaltma neyse tabii eğer gerçekten yola gelen bir şey buyokdestek.
Bu nedir `#` operatör Scala için ne if...
Scala operatör...
:: (double kolon) Java 8'de operatör...
Scala: Nil vs Liste()...
Nasıl bir scala bağımlılık enjeksiyon ...