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

  • Dan Gately

    Dan Gately

    13 AĞUSTOS 2006
  • Professor Messer

    Professor Me

    27 NİSAN 2007
  • WPBeginner - WordPress Tutorials

    WPBeginner -

    17 Temmuz 2009