Da ich neu bei scala bin google ich viele Dinge und finde gute Antworten in den meisten Fällen. Aber ich konnte keine Antwort auf diese spezifische Frage finden, da googeln "nach-dekrement in scala" nur nach oben bringt, nützt-nach-dekrement-in-scala-weil-es-eine-funktionale-Sprache-Antworten.Zuordnen von Ordnungszahl zu Sequenz ohne nach-Dekrement in scala
Also, ich möchte wirklich wissen, was die funktionelle Art und Weise ist zu tun, die folgenden:
object A {
val list = List("a", "b", "c")
val map = {
var ord = list.size
Map(list map { x => (x, { val res = ord; ord -= 1; res }) } : _*)
}
}
class Test extends org.scalatest.FunSuite {
test("") {
println(A.map) // Map(a -> 3, b -> 2, c -> 1)
}
}
Es ist im Grunde eine Karte aus einer vorgegebenen Liste erstellen und Ordnungszahlen der Liste zu jedem Element zuweisen abnehmend (real Code ist natürlich komplexer als dieses minimale Beispiel).
Ich bin besonders unzufrieden mit var ord = ...
(veränderbar) und { val res = ord; ord -= 1; res }
(Post-Dekrement) Teile:/Gibt es eine andere (schönere) Art, dies zu tun?
Das zweite 'reverse' ist unnötig, angesichts der' toMap' –
@TheArchetypalPaul stimme ich zu, aber ich wollte das Beispiel Drucken Sie es so, wie OP es sehen wollte. Vielleicht sollte ich es entfernen. –
@YuvalItzchakov Ich bin mir bewusst, dass Karten nicht bestellt werden;) – Alex