Scala alt çizgi - HATA: genişletilmiş işlev için eksik parametre türü


88

Bununla ilgili epeyce soru olduğunu biliyorum, ama işe yaraması gerektiğini düşündüğüm basit bir örnek oluşturdum, ancak hala yok ve nedenini anladığımdan emin değilim

val myStrings = new Array[String](3)
// do some string initialization

// this works
myStrings.foreach(println(_))


// ERROR: missing parameter type for expanded function
myStrings.foreach(println(_.toString))

Birisi ikinci cümlenin neden derlenmediğini açıklayabilir mi?


4
Daha da basit:myStrings.foreach (println)
kullanıcı bilinmiyor

Yanıtlar:


120

Şunlara genişler:

myStrings.foreach(println(x => x.toString))

İstediğiniz:

myStrings.foreach(x => println(x.toString))

Anonim işlevler için yer tutucu sözdizimi, olası en küçük içeren ifadeyi bir işlevle değiştirir.



Neden argümanı myStrings.foreach(println(_))otomatik olarak dahil toStringediyor println?
Kevin Meredith

1
@Kevi Meredith println, geçirilen nesnenin toString () 'i çağırır
krookedking

1
Anonim işlevler için yer tutucu sözdizimi bir işlevle mümkün olan en küçük içeren ifadeyi değiştirir. Bu soruda ifade ettiğim şüphelerim konusunda bana yardımcı oldu: stackoverflow.com/questions/37589210/…
GA1
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.