Uno de los problemas con los que me encuentro continuamente con scala es con las expresiones lambda '. Por ejemplo"Falta el tipo de parámetro para la función expandida" cuando se usa _ (guion bajo)?
JarBuilder.findContainingJar(clazz).foreach {userJars = userJars + _ }
me da un error como:
missing parameter type for expanded function ((x$1) => userJars.$plus(x$1))
Sin embargo, si hago la expansión a mí mismo:
JarBuilder.findContainingJar(clazz).foreach {x => userJars = userJars + x }
funciona bien.
¿Es esto un error de Scala? ¿O estoy haciendo algo terriblemente malo?
'_' no significa lo que creo que significa que hay. Es un símbolo * especial * en ese contexto: * cualquier otro identificador simple debería funcionar bien *. Debido a esta magia, 'Some (4) .foreach (_ +: List())' "funciona bien". Para ver, compara 'Some (4) .map (_ + 1)' y 'Some (4) .map (x => x + 1)'. Esperemos que este sea un duplicado (y cerrado como tal) o habrá una buena respuesta que saque del SLS :) –
http://stackoverflow.com/questions/7695270/underscore-in-list-filter (bueno), http : //stackoverflow.com/questions/4422016/scala-underscore-minimal-function, http://stackoverflow.com/questions/6593277/concise-notation-for-single-arg-anonymous-function-avoiding-underscore-not -wor –
(En realidad, me pregunto si hay un contexto * any * donde '_' es * no * mágico * de otra manera * ...) –