Al intentar responder a esta pregunta: Leave off underscore in function literal Intenté codificar un ejemplo y me enfrenté a un comportamiento extraño.Scala: resultado inverso al escapar subrayado con :::
scala> val myList = 1::2::Nil
myList: List[Int] = List(1, 2)
scala> def concat:(List[Int]=> List[Int]) = myList:::
concat: (List[Int]) => List[Int]
scala> concat(3::Nil)
res1: List[Int] = List(3, 1, 2)
Aunque no tengo la buena respuesta cuando uso _
o x=> f(x)
sintaxis.
scala> def concat0:(List[Int]=> List[Int]) = x=> myList:::x
concat0: (List[Int]) => List[Int]
scala> def concat1:(List[Int]=> List[Int]) = myList::: _
concat1: (List[Int]) => List[Int]
scala> concat0(3::Nil)
res2: List[Int] = List(1, 2, 3)
scala> concat1(3::Nil)
res3: List[Int] = List(1, 2, 3)
¿Hay una explicación racional por qué se produce después de myList
3::Nil
en la función concat
?
Gracias por la publicación realmente detallada y clara. –