Also für eine sehr kleine Formel interpretter fragte mich jemand, um Code-Golf, ich so etwas wieOperatoren als Funktionsliteralen
val ops = Map("plus" -> + , "minus"-> -, "times"-> *, "div" -> /)
zu ermöglichen schnelle Konvertierung zwischen Keywords und den Funktionen, die sie beschreiben, tun wollte. Diese Syntax wurde nicht analysiert, aber keine der anderen Kürzel-Syntaxen, die ich versuchte (_ + _
, _:Int.+_
), wurde analysiert. Gibt es eine Möglichkeit, dies als eine Funktion Kurzschrift zu tun, oder bin ich dazu verdammt, die Lambdas vollständig zu schreiben, ruinieren meine Golf-Score.
Edit: Das Problem in Frage war nur ganze Zahlen. Ich verstehe, dass eine Überlastung das sonst erheblich erschweren würde.
der einzige Weg, ich weiß, wäre 'val ops = Map [String, (Int, Int) => Int] ("plus" -> (_ + _), "minus" -> (_ - _)); 'Das spart nicht zu viele Charaktere aber ... Ich bin gespannt, was erfahrenere/klügere Leute vorschlagen. :) –
@ PatrykĆwiek, wenn das OP möchte einen allgemeinen Ansatz für jeden Wert, wird Lambda nicht helfen, weil diese Operationen überlastet sind – 4lex1v
@AlexIv True, es ist spezialisiert. Ich habe mit der Anmerkung "_: Int" in der Frage angenommen, dass ein einfaches "(Int, Int) => Int" ausreichend ist. Wenn es eine allgemeine Frage ist, dann habe ich keine Ideen mehr. :) –