문제

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.

도움이 되었습니까?

해결책

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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top