Scala underscore minimal function

前端 未结 3 614

Let\'s create a value for the sake of this question:

val a = 1 :: Nil

now, I can demonstrate that the anonymous functions can be written in

相关标签:
3条回答
  • 2020-11-27 22:39

    For the record, a.map(_) does not work because it stands for x => a.map(x), and not a.map(x => x). This happens because a single _ in place of a parameter stands for a partially applied function. In the case of 2*_, that stands for an anonymous function. These two uses are so close that is very common to get confused by them.

    0 讨论(0)
  • 2020-11-27 22:43

    Your first shorthand form can also be written point-free

    a map (2*)
    

    Thanks to multiplication being commutative.

    As for (x) => x, you want the identity function. This is defined in Predef and is generic, so you can be sure that it's type-safe.

    0 讨论(0)
  • 2020-11-27 22:53

    You should use identity function for this use case.

    a.map(identity)
    

    identity is defined in scala.Predef as:

    implicit def identity[A](x: A): A = x 
    
    0 讨论(0)
提交回复
热议问题