Reputation: 83
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.
Upvotes: 0
Views: 147
Reputation: 42440
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
Upvotes: 3