考虑以下Scala中的定义:
val f = ((_: Int) + 1).toString()
代码将函数文字表达式 _+1 的字符串表示分配给 f,这很自然,但这不是我想要的。我希望定义一个接受 int 参数、将其增加 1 并返回其字符串格式的函数。
为了消除歧义,我必须编写一个带有明确参数的 Lambda 表达式:
val g = (x: Int) => (x + 1).toString()
那么我可以得出结论,占位符语法不适用于复杂的函数文字吗?或者有没有规则说明函数文字的范围?似乎在函数文字内,占位符不能嵌套在括号中(除了定义其类型所需的括号)。
Function1#compose
相当于 Haskell 中的.
。但是由于 Scala 的从左到右流动类型推断,使用Funtion1#andThen
更加方便。 - missingfaktor