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.