Comment utilisez-vous la carte.foldleft? Selon le docs On dirait
foldLeft [B] (z: B)(op: (B, (A, B)) ⇒ B) : B
Mais j'ai des difficultés:
Map("first"->1,"second"->2).foldLeft(0)((a,(k,v)) => a+v )
erreur: pas un paramètre formel légal
L'erreur indique le support ouvert devant k.
Si vous voulez utiliser le (a, (k, v))
Syntaxe, vous devez conseiller le compilateur d'utiliser la correspondance des motifs.
Map("first"->1, "second"->2).foldLeft(0){ case (a, (k, v)) => a+v }
Notez que une instruction case
nécessite des accolades bouclées.
Je pense que vous ne pouvez pas faire le match de modèle sur les tuples comme vous attendez:
Map("first"->1,"second"->2).foldLeft(0)((a, t) => a + t._2)
En fait, l'utilisation de valeurs et de somme est plus simple.
Map("first"->1,"second"->2).values.sum
L'astuce consiste à utiliser une fonction partielle en tant que bloc de code, en d'autres termes, vous ajoutez une instruction case
correspondant aux arguments:
Map("first" -> 1, "second" -> 2).foldLeft(0) { case (a, (k, v)) => a + v }