【发布时间】:2011-01-18 14:53:07
【问题描述】:
我是 scala 的新手,正在尝试编写一个函数文字来检查给定整数是否为奇数。 我的第一次尝试是:
val isOdd = (x:Int) => (x & 1) == 1
效果很好,而且由于参数 x 在这个函数字面量中只出现一次,我很想使用“_”符号来进一步简化它,如下所示:
val isOdd = ((_:Int) & 1 ) == 1
但是这次编译器抱怨:
警告:使用 `==' 比较新对象总是会产生错误 val isOdd = ((_:Int) & 1 ) == 1
这个警告是什么意思?为什么编译器将((_ :Int) & 1) 识别为新对象而不是产生值的按位运算?有没有办法使用“_”符号来编写这个函数字面量?
【问题讨论】:
-
只需使用:
val odd = ! even (_:Int)