Ответ 1
Это просто экземпляр функции идентификации, предопределенный для удобства, и, возможно, для того, чтобы люди не переопределяли его самостоятельно целую кучу раз. identity
просто возвращает свой аргумент. Иногда бывает полезно перейти к функциям более высокого порядка. Вы можете сделать что-то вроде:
scala> def squareIf(test: Boolean) = List(1, 2, 3, 4, 5).map(if (test) x => x * x else identity)
squareIf: (test: Boolean)List[Int]
scala> squareIf(true)
res4: List[Int] = List(1, 4, 9, 16, 25)
scala> squareIf(false)
res5: List[Int] = List(1, 2, 3, 4, 5)
Я также видел, что время от времени оно использовалось как значение аргумента по умолчанию. Очевидно, вы могли бы просто сказать x => x
любое место, где вы могли бы использовать identity
, и вы даже сохранили бы пару символов, поэтому он не купит вас много, но он может быть самодокументирован.