Pregunta

vi una continuación de código:

Map(1 -> "one", 2 -> "two") map _._1

Este cambio un Iterable [Int], pero si quiero hacer nada con el mapa, cómo hacerlo?

Quiero hacer algo como abajo, pero el siguiente código no puede compilar, lo sé porque una instancia de objeto no es una función, pero la forma de crear una función para hacer x => x y el uso de marcador de posición:

Map(1 -> "one") map (_)  // map (Int, String) to (Int, String) by nothing change
// I test some other way, but all can't compile

cómo hacer esto?

ACTUALIZADO

Lo siento por confundir persona apasionada. Quiero saber por qué map (_) != map (x => x), compilador transformar este código para (x$1) => Map(1.$minus$greater("one")).map(x$1) por qué no Map('a'.$minus$greater(1)).map((x$1) => x$1), y lo hace no tiene una forma que puede utilizar _ este código?

I utiliza a continuación el código de compilador de ayuda inferido la _ tipo:

Map(1 -> "one") map (_:((Int, String))=>(Int, String))
// but it return (((Int, String)) => (Int, String)) => scala.collection.immutable.Map[Int,String] = <function1>

Se parece que el analizador no estaba seguro de dónde colocar el inicio de la función anónima. Así que mi nueva pregunta es "¿Cómo ayudar a que el analizador para restringir límite de una función anónima?"

¿Fue útil?

Solución

No estoy seguro de entender la pregunta, pero identity es quizá lo que estás buscando:

scala> Map(1 -> "one") map (identity)
res66: scala.collection.mutable.Map[Int,java.lang.String] = Map((1,one))

o, hacer algunos trucos:

scala> def __[A](x: A): A = x
__: [A](x: A)A

scala> Map(1 -> "one") map (__)
res1: scala.collection.immutable.Map[Int,java.lang.String] = Map((1,one))

Otros consejos

Me parece una respuesta de Daniel, funciones anónimas y mapas en Scala , esta respuesta me dejó claro cómo el proceso de marcador de posición analizador en este caso. gracias por todo.

No puedo ver ningún valor en lo que estamos tratando de hacer aquí, la forma correcta para mapear una colección a sí mismo no es el mapeo de llamada!

Incorrecto:

Map(1 -> "one") map (_)

A la derecha:

Map(1 -> "one")

Ni siquiera es útil como una operación de copia superficial, el valor predeterminado Scala Mapa es inmutable y no hay ningún punto en copiarlo.


  Map(1 -> "one") map((x)=>x)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top