Pregunta

Sé que puedes crear una función anónima y hacer que el compilador infiera su tipo de retorno:

val x = () => { System.currentTimeMillis }

Solo por motivos de escritura estática, ¿es posible especificar también su tipo de retorno?Creo que aclararía mucho las cosas.

¿Fue útil?

Solución

En mi opinión, si usted está tratando de hacer las cosas más claras que es mejor para documentar la expectativa en el identificador x mediante la adición de una anotación de tipo no más que el resultado de la función.

val x: () => Long = () => System.currentTimeMillis

A continuación, el compilador se asegurará de que la función en el lado derecho se encuentra con esa expectativa.

Otros consejos

val x = () => { System.currentTimeMillis } : Long

Fabian dio el camino sencillo, pero algunas otras maneras si te gusta la microgestión de azúcar incluyen:

val x = new (() => Long) {
  def apply() = System.currentTimeMillis
}

o

val x = new Function0[Long] {
  def apply() = System.currentTimeMillis
}

o incluso

val x = new {
  def apply(): Long = System.currentTimeMillis
}

ya que en la mayoría de situaciones que no hace ninguna diferencia si se desciende de la función, solamente si tiene un aplique.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top