java - puede - instrucciones lambda c#
Escribir una expresión lambda cuando se ignoran los parámetros en el cuerpo. (1)
¿Cómo escribo una expresión lambda si no requiere argumentos y, por lo tanto, su nombre es excesivo?
De esta manera no se compila:
setRowFactory(-> new TableRowCustom());
Pero este hace:
setRowFactory(__ -> new TableRowCustom());
¿Hay alguna manera mejor?
Ya que has mencionado que esto funciona
setRowFactory(__ -> new TableRowCustom());
Supongo que el método de interfaz funcional esperado debe aceptar un solo argumento. El identificador _
es una palabra clave reservada desde Java 8.
Yo solo usaría un solo carácter desechable (identificador válido).
setRowFactory(i -> new TableRowCustom());
setRowFactory($ -> new TableRowCustom()); // allowed, but avoid this
o incluso
setRowFactory(ignored -> new TableRowCustom());
para ser explícito
La especificación del lenguaje Java define la sintaxis de una expresión lambda
LambdaExpression:
LambdaParameters -> LambdaBody
y
LambdaParameters:
Identifier
( [FormalParameterList] )
( InferredFormalParameterList )
InferredFormalParameterList:
Identifier {, Identifier}
En otras palabras, no puede omitir un identificador.
Como sugiere Holger , si y cuando decidan usar _
como un nombre de parámetro no utilizado, será fácil cambiar de __
a _
en su código fuente. Es posible que desee seguir con eso por ahora.