ich so etwas wie dies tun wollen (vereinfacht sehr stark):Arbeiten mit Tupeln in Scala
((1, 2, 3, 4, 5, 6), (6, 5, 4, 3, 2, 1)).zipped map (_ + _)
die tatsächlichen Werte der ganzen Zahlen ignorieren (obwohl es wichtig ist, dass diese 6-Tupel sind, eigentlich :)) . Im Wesentlichen möchte ich dies ziemlich regelmäßig in einer Funktion verwenden, die ein Map[String, (Int, Int, Int, Int, Int, Int)]
beibehält, wenn ein vorhandenes Element aktualisiert wird.
Wie es ist, Scala spuckt das bei mir aus:
<console>:6: error: could not find implicit value for parameter w1: ((Int, Int, Int, Int, Int, Int)) => scala.collection.TraversableLike[El1,Repr1]
((1, 2, 3, 4, 5, 6), (6, 5, 4, 3, 2, 1)).zipped
Wenn ich Seq
s anstelle von Tupeln, alles funktioniert gut, aber ich möchte ein arity von 6 in der Art System (I erzwingen werde wohl bald type Record = (Int, Int, Int, Int, Int, Int)
als schnellen refactor).
Kann mir jemand Ratschläge geben, was ich falsch mache/warum wird Scala nicht mit dem obigen Code umgehen? Ich dachte, es könnte funktionieren, wenn ich ein 2- oder 3-Arity-Tupel verwende, da Scala Tuple2
und Tuple3
s definiert (ich verstehe, dass die Skalierung von Tupelfunktionen über eine beliebige N-Arität schwierig ist), aber ich bekomme denselben Fehler.
Vielen Dank im Voraus für jede Hilfe angeboten :).
Ich mag das. Ich muss mehr auf Implicits schauen, da es aussieht, als wären sie ein sehr mächtiges Konstrukt, das ich verpasse (ich lerne gerade Scala, wie ich es gerade mache). Vielen Dank! – frio
oh, das ist ziemlich elegant. Mag ich! –