ruffbytes
ruffbytes

Reputation: 83

Scala How To Send Anonymous Functions Results as Argument

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

Answers (1)

Ayush
Ayush

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

Related Questions