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

  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011
  • MatheusDosGames

    MatheusDosGa

    28 Aralık 2011
  • NikkoNantone

    NikkoNantone

    21 Kasım 2011