在scala中传递对无参数方法的引用

时间:2014-06-10 21:57:56

标签: scala

如何在scala中传递对无参数方法引用的引用?

例如:

class Foo {
  def foo: String = computeSomethingAndReturnIt
}

object Foo extends App {
  def acceptSupplier(???) { doSomethingWithFooSupplier }
  val f = new Foo
  acceptSupplier(f.foo ???)
}

我知道我可以通过声明foo来定义Unit来接受def foo()...,这会有效,但有没有办法传递foo并让它接受零参数如上面的代码片段所示?

2 个答案:

答案 0 :(得分:3)

您可以使用按名称参数:

def acceptSupplier(f: => String) { ... }
val f = new Foo
acceptSupplier(f.foo)

答案 1 :(得分:1)

或更明确地说:

def acceptSupplier(f: () => String) { ... }
val f = new Foo
acceptSupplier(f.foo _)