Asa*_*din 1 types scala invocation
Scala允许在没有括号的情况下调用没有参数列表的函数:
scala> def theAnswer() = 42
theAnswer: ()Int
scala> theAnswer
res5: Int = 42
Run Code Online (Sandbox Code Playgroud)
我将如何构造一个scala表达式来计算函数theAnswer
本身,而不是结果theAnswer
?或者换句话说,我将如何修改表达式theAnswer
,以便结果是类型() => Int
,而不是类型Int
?
它可以通过以下方式完成:
scala> theAnswer _
res0: () => Int = <function0>
Run Code Online (Sandbox Code Playgroud)
从答案到类似的问题:
规则实际上很简单:只要编译器没有明确地期望Function对象,就必须编写_.
此调用将每次创建新实例,因为您将"转换"方法转换为函数(所谓的"ETA扩展").