Scala'da 'val a: A = _' (alt çizgi) tam olarak ne anlama geliyor?


Yanıtlar:


143

val a: A = _bir derleme hatasıdır. Örneğin:

scala> val a: String = _
<console>:1: error: unbound placeholder parameter
       val a: String = _
                       ^

İş nedir var a: A = _( varyerine not edin val). Chuck'ın cevabında dediği gibi, bu değişkeni varsayılan bir değere ilklendirir. Scala Dil Spesifikasyonundan:

T, Int veya alt aralık türlerinden biri ise 0, T
Long ise 0L, T
Float ise
0.0f, T Double ise 0.0d, T
Boole ise yanlış,
() T Unit ise,
diğer tüm türler için null T.


6
Ha, val / var anahtarını iyi yakaladın. Beynim hemen geçti.
Chuck

2
Neden bunun üzerinde çalışılmadığına dair bir fikir var valmı?
Erik Kaplun

4
@ErikAllik: Bu tamamen bir spekülasyon, ancak val a: Int = _muhtemelen bir derleme hatasıdır çünkü işe yararsa kötü bir uygulama olur. Bu sadece şaşkın bir yazı tarzı olurdu val a: Int = 0. A'nın varvarsayılan bir değere ayarlanması anlamlıdır çünkü vara'nın değişmesi beklenir, ancak a valsabittir, bu nedenle en iyi uygulama açıkça bir değer atamak olacaktır.
Shuklaswag

1
@Shuklaswag: Sadece onun bir tamsayısını biliyorsanız. Henüz bilmediğim tipte bir değeri başlatmak için bunu kullanmaya çalışıyorum.
Adrian Mayıs

33

Türün avarsayılan değerine başlar A. Örneğin, bir Int'nin varsayılan değeri 0'dır ve başvuru türünün varsayılan değeri null'dur.


10
NotNullÖzelliği karıştıran bir sınıfın varsayılan değeri nedir ? :-)
Jean-Philippe Pellet

9
@ Jean-PhilippePellet: Scala 2.9.0.1 itibariyle (kullandığım en son sürüm), NotNull özelliğiyle karışan bir sınıfın varsayılan değeri - dramatik duraklama - null . Bunun muhtemelen bir noktada değişeceğini düşünüyorum, ancak şu anda _kozlar gibi görünüyor NotNull.
Chuck
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.