Ich bin ziemlich neu in Scala, so hoffentlich tolerieren Sie diese Frage in dem Fall, dass Sie es noobish finden :)Kann ich die Map-Sammlung in Scala mit For-Yield-Syntax zurückgeben?
ich eine Funktion geschrieben, die eine Seq von Elementen Ausbeute Syntax gibt:
def calculateSomeMetrics(names: Seq[String]): Seq[Long] = {
for (name <- names) yield {
// some auxiliary actions
val metrics = somehowCalculateMetrics()
metrics
}
}
jetzt muss ich es ändern, um eine Karte zurück die ursprünglichen Namen gegen jeden der berechneten Werte zu erhalten:
def calculateSomeMetrics(names: Seq[String]): Map[String, Long] = { ... }
ich versucht habe die gleiche Ausbeute-Syntax zu verwenden, aber ein Tupel statt eines einzelnen Elements zu erhalten :
def calculateSomeMetrics(names: Seq[String]): Map[String, Long] = {
for (name <- names) yield {
// Everything is the same as before
(name, metrics)
}
}
jedoch der Compiler interpretiert es Seq[(String, Long)]
, gemäß der Compiler-Fehlermeldung
type mismatch;
found : Seq[(String, Long)]
required: Map[String, Long]
Also ich frage mich, was ist die "kanonische Scala Art und Weise", so etwas zu implementieren?
Ähnliche: https://StackOverflow.com/Questions/40525115/How-to-choose-the-output-Collection-type-in-seq-map –