Sürekli olarak scalaya girdiğim bir problem, lambda 'ifadeleridir. Örneğin_ (alt çizgi) kullanılırken "Genişletilmiş işlev için eksik parametre türü"?
JarBuilder.findContainingJar(clazz).foreach {userJars = userJars + _ }
bana gibi bir hata veriyor:
missing parameter type for expanded function ((x$1) => userJars.$plus(x$1))
Yine de genişleme kendim yaparsam:
JarBuilder.findContainingJar(clazz).foreach {x => userJars = userJars + x }
iyi çalışır.
Bu bir Scala hatası mı? Yoksa korkunç bir şey mi yapıyorum?
'_' düşünebilirsiniz ne Ancak gerçekleştirmek için çalışıyoruz Verilen. Bu bağlamda * özel * sembolüdür: * herhangi bir basit tanımlayıcının iyi çalışması gerekir *. Bu sihirden dolayı, '' '(4) .foreach (_ +: List())' ''' iyi çalışıyor ''. Görmek için, '' (4) .map (_ + 1) 've' Some (4) .map (x => x + 1) 'seçeneklerini karşılaştırın. Umarım bu bir kopyasıdır (ve böyle kapalı) ya da SLS'den gelen güzel bir cevap olacaktır :) –
http://stackoverflow.com/questions/7695270/underscore-in-list-filter (iyi), http : //stackoverflow.com/questions/4422016/scala-underscore-minimal-function, http://stackoverflow.com/questions/6593277/concise-notation-for-single-arg-anonymous-function-avoiding-underscore-not -korku –
(Aslında, * herhangi bir * bağlamı var mı diye merak ediyorum * _ * * * farklı bir şekilde büyülü *)) –