SORU
4 ŞUBAT 2013, PAZARTESİ


Scala yapıcı parametreleri özel val için varsayılan?

Çalışıyorum:

class Foo(bar: Int)

vs:

class Foo(private val bar: Int)

ve her yerde (bar: Int) yani benim soru (private val bar: Int) * söyleyerek bulamadım ancak aynı çalışır gibiler, bunlar aynı/benzer?

Bir yan not, kod parçaları ve bunlar üzerinde -Xprint:typer kullanmaya çalışıyorum ikincisi fazladan bir satır dışında aynı kod üretmek. Nasıl bu fazladan bir satır okudun mu?

..
class Foo extends scala.AnyRef {
  <paramaccessor> private[this] val bar: Int = _;
  def <init>(bar: Int): this.Foo = {
    Foo.super.<init>();
    ()
  }
}
..


..
class Foo extends scala.AnyRef {
  <paramaccessor> private[this] val bar: Int = _;
  <stable> <accessor> <paramaccessor> private def bar: Int = Foo.this.bar;
  def <init>(bar: Int): this.Foo = {
    Foo.super.<init>();
    ()
  }
}
..

CEVAP
4 ŞUBAT 2013, PAZARTESİ


bar: Int

Bu zor yapıcı bir parametredir. Eğer bu değişken her yerde kurucu dışında kullanılırsa, orada kalır. Hayır alan oluşturulur. Aksi takdirde private val bar alan oluşturulur ve bar parametre değeri atanır. Hayır alıcı oluşturulur.

private val bar: Int

Parametre, bu ülkeler için, özel alıcı private val bar alan oluşturur. Bu davranış, eğer parametre yapıcı (toString() ya da değil gibi) yanında kullanılmış olursa olsun, yukarıdaki gibi aynı.

val bar: Int

Yukarıdaki gibi aynı ama Scala-alıcı kamu

Dava sınıfları bar: Int

Dava sınıflar söz konusu olduğunda, varsayılan olarak, her bir parametre val değiştirici vardır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • GOTO Conferences

    GOTO Confere

    3 EKİM 2011
  • Joshua Kywn

    Joshua Kywn

    17 Mayıs 2010