Scala 2.8'de bir vaka sınıfının yüklenicilerine aşırı yüklenmenin bir yolu var mı?Aşırı yük kurucu?
Evet, lütfen açıklamak için bir pasaj yerleştirin, eğer olmasın, lütfen nedenini açıklayın?
Scala 2.8'de bir vaka sınıfının yüklenicilerine aşırı yüklenmenin bir yolu var mı?Aşırı yük kurucu?
Evet, lütfen açıklamak için bir pasaj yerleştirin, eğer olmasın, lütfen nedenini açıklayın?
Aşırı yükleme kurucular vaka sınıfları için özel değildir: Ancak
case class Foo(bar: Int, baz: Int) {
def this(bar: Int) = this(bar, 0)
}
new Foo(1, 2)
new Foo(1)
, ayrıca new
ihmal çağrılan arkadaşı nesne, içinde apply
yöntemi aşırı isteyebilirsiniz.
object Foo {
def apply(bar: Int) = new Foo(bar)
}
Foo(1, 2)
Foo(1)
Scala 2.8'de, adı geçen ve varsayılan parametreler genellikle aşırı yükleme yerine kullanılabilir. kesinlikle doğru değil
case class Baz(bar: Int, baz: Int = 0)
new Baz(1)
Baz(1)
Aşırı yüklenmiş bir kurucuyu her zamanki gibi tanımlayabilirsiniz, ancak bunu çağırmak için "yeni" anahtar sözcüğünü kullanmanız gerekir.
scala> case class A(i: Int) { def this(s: String) = this(s.toInt) }
defined class A
scala> A(1)
res0: A = A(1)
scala> A("2")
<console>:8: error: type mismatch;
found : java.lang.String("2")
required: Int
A("2")
^
scala> new A("2")
res2: A = A(2)
- Ben scala içinde geri dönüş değerlerinin gibi bir şey arıyordu, normal –
Çok güzel :) gibi Tamamlayıcı nesnesi ilan edebilir, bu 2.8'den yeni? Bilmiyordum :) – Felix
Evet, Adlandırılmış ve Varsayılan parametreler Scala 2.8'de yeni. – retronym
Martin Odersky, ek uygulama yöntemlerinin neden otomatik olarak eklenmediğini açıklıyor: http://www.scala-lang.org/node/976 –