scala - 如何区分 Scala 中对无参数函数的引用和对该函数的调用?

标签 scala syntax

假设我有一个像这样的函数定义

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/

相关文章:

c++ - 晦涩的 C++ 语法

scala - 使用 Akka 以编程方式获取临时端口

scala - 有适用于 AWS 的 Scala SDK 或接口(interface)吗?

Ruby block - NoMethodError : undefined method `-' for nil:NilClass

java - Scala 点语法(或缺乏)

delphi - 是否有静态构造函数/析构函数帮助主题

syntax - 有人可以为我解释一下吗 - for (int i = 0; i < 8; i++)

scala - 如何根据另一个数据帧过滤一个 Spark 数据帧

scala - Intellij 13 和导入 SBT 项目

scala - 删除类型字段