2011-10-02 28 views
69

Bunun hakkında epeyce soru olduğunu biliyorum, ancak çalışmam gerektiğini düşündüğüm basit bir örnek oluşturdum, ancak yine de yapmıyorum ve emin değilim Neden anlıyorum, neden ikinci ifadenin neden derlenmediğini açıklayabilir miyim? Sen istiyorsunScala alt çizgi - HATA: genişletilmiş işlev için eksik parametre türü

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

: anonim fonksiyonlar için

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

tutucu sözdizimi fonksiyonu ile mümkün olan en küçük içeren ifadeyi değiştirir

+3

Daha da basit: 'myStrings.foreach (println)' –

cevap

90

Bu şekilde genişler.

+1

Benzer: http://stackoverflow.com/questions/5981732/scala-underscore-use-to-simplify-syntax-of-function-literals http: // stackoverflow.com/questions/5259006/underscore-in-named-arguments – retronym

+0

Neden 'myStrings.foreach (println (_))' 'println' argümanını otomatik olarak' toString' içeriyor? –

+0

@Kevi Meredith println, iletilen nesnenin toString() işlevini çağırır – krookedking

İlgili konular