【发布时间】:2019-06-11 03:56:02
【问题描述】:
我无法理解函数文字的部分应用函数的签名。例如,考虑以下以相同方式工作的函数和方法定义:
def meth(x: Int): Unit = ()
val func = (x: Int) => ()
现在从上面的每个方法/函数中创建一个部分应用的函数。注意结果函数的签名:
val f = meth _ // Int => Unit
val g = func _ // () => Int => Unit
我不明白为什么func _ 的签名包含() => 部分,这使得g 必须被称为g()(1) 而不是g(1)。
【问题讨论】:
-
您可以将此视为错误。在 scala 2.13 中,您将收到错误消息
_ must follow methodforval g = func _,因为用于将方法转换为函数文字的 eta 扩展只适用于方法。 -
@BogdanVakulenko 你有提到这个错误或建议的改变吗?
-
我的错。不是错误。适用于 scala 2.13 以及顶级方法。 stackoverflow.com/questions/52525520/… - 你的问题的另一个答案。
标签: scala