как упростить функциональный литерал scala таким образом?

я новичок в scala и пытаюсь написать функциональный литерал которые проверяют, является ли данное целое число нечетным или нет. моя первая попытка:

val isOdd = (x: Int) => (x & 1) == 1

он отлично работает, и, поскольку параметр x появляется только один раз в этом функциональном литерале, я был соблазн использовать обозначение «_» для дальнейшего упрощения, например:

val isOdd = ((_: ​​Int) & 1) == 1

, однако на этот раз компилятор жалуется:

warning: comparing a fresh object using `==' will always yield false
val isOdd = ((_:Int) & 1 ) == 1

что это делает предупреждение означает? почему компилятор распознает ((_: ​​Int) & 1) как свежий объект, а не как побитовую операцию, которая приводит к значению? есть ли способ записать этот функциональный литерал с использованием обозначения "_"?

5
задан hind_d 18 January 2011 в 14:53
поделиться