Pregunta

How does one send the result of an anonymous function as an argument into another function?

As an example:

object TestThisFunction {

  def getString(): String = {
    "foo"
  }

  def useString(foo: String) = {
      println(foo + "bar")
  }

  useString("foo");
  useString(getString());

  // This does not work: type mismatch; found : () => String required: String
  useString(() => {
    "foo"  
  })
}

Is there some syntax that would make the last call to useString() work using an anonymous function?

Thank you for your time.

¿Fue útil?

Solución

Call the anonymous function immediately after creating it, to have it's evaluated value be used, instead of the function itself:

useString((() => {
  "foo"  
})())

You can also pass in arguments, if needed:

scala> ((a: String) => { a })("bar")
res3: String = bar
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top