Scala如何发送匿名函数结果作为参数

时间:2014-02-13 18:55:30

标签: scala anonymous-function

如何将匿名函数的结果作为参数发送到另一个函数?

举个例子:

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"  
  })
}

是否有一些语法可以使用匿名函数对useString()进行最后一次调用?

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

创建后立即调用匿名函数,使用它的评估值,而不是函数本身:

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

如果需要,您还可以传递参数:

scala> ((a: String) => { a })("bar")
res3: String = bar