SORU
21 EKİM 2010, PERŞEMBE


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
22 EKİM 2010, Cuma


Craig'24 *s*, ama anlamı daha güçlü bir şekilde yapılmış olması gerekiyor.

  1. Orada hiçbir "ilkel Int o zaman bunu yapabilirsiniz," ... Bir kullanıcı yapımı Complex (örneğin).

  2. temel kullanımı bu şekilde olacaktır:

    var x = 1 // or Complex(1, 0)

    x

  3. Nasıl sınıf Complex 10 *uygulamak mı? , Int gibi nesne değişmez olduğunu varsayarsak, o zaman yöntemi bir dönüş gerekiyoryeninesne, ama yeni bir nesne olması gerekiratanmış.

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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Cartoonium

    Cartoonium

    11 NİSAN 2011
  • LG Mobile Global

    LG Mobile Gl

    2 EYLÜL 2010
  • xdadevelopers

    xdadeveloper

    25 Aralık 2009