41 votes

Cartes Scala -> opérateur

Que signifie le symbole -> dans le contexte d'un Map dans Scala ?

La Predef Scala offre une conversion implicite qui permet d'écrire key -> value comme syntaxe alternative pour la paire (key, value) . Je l'ai lu dans ScalaByExample mais je ne vois pas comment cela fonctionne pour Maps.

16voto

Rex Kerr Points 94401

-> est utilisé pour coupler les clés et les valeurs d'une carte. Alors:

 val m = Map(1 -> "one", 2 -> "two", 3 -> "three")

mappera les 3 premiers entiers positifs en équivalents textuels (c'est-à-dire que m(1) sera "one" , etc.). Vous pouvez aussi l'écrire comme

 val m = Map((1,"one"), (2,"two"), (3,"three"))

mais la première façon est plus jolie, c'est pourquoi elle est proposée comme alternative.

1voto

actor2019 Points 145

Comme Adam l'a dit, -> n'est pas la syntaxe scala , c'est une méthode de la classe ArrowAssoc . Lorsque vous écrivez "foo" -> "bar", le compilateur insère une conversion implicite de "foo" vers l'instance ArrowAssoc afin que la -> puisse être trouvée.

 package scala
object Predef {
   class ArrowAssoc[A](x: A) {
       def -> [B](y: B): Tuple2[A, B] = Tuple2(x, y)
      }
      implicit def any2ArrowAssoc[A](x: A): ArrowAssoc[A] =
        new ArrowAssoc(x)
      ...
}

google ""scala rich wrappers" pour en savoir plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X