假设我有一个像这样的函数定义
def twice(f: Int => Unit): Unit = {
f(1)
f(1)
}
def oneParam(i: Int) = println(1)
twice(oneParam)
我可以通过名称传递 oneParam,但如果我对无参数函数执行相同操作:
def twice(f: Unit => Unit): Unit = {
f()
f()
}
def noParams() = println(2)
twice(noParams)
我收到编译器错误,因为即使我使用空参数列表声明了 noParams,编译器也会认为我正在尝试调用没有参数列表的函数。那么我该如何传递这个函数呢?
最佳答案
您的函数被声明为错误。 Unit => Unit
不是一个不带参数的函数,它是一个带有一个 Unit
类型参数的函数。
尝试像这样声明它:def times(f: () => Unit)
关于scala - 如何区分 Scala 中对无参数函数的引用和对该函数的调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39986369/