如何在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
并让它接受零参数如上面的代码片段所示?
答案 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 _)