Wie definieren Sie einen ternären operator, die in Scala, das bewahrt führenden tokens?

Schreibe ich einen code-generator, erzeugt der Scala-Ausgang.

Brauche ich, um zu emulieren einen ternären operator, die in einer solchen Weise, dass die Token im Vorfeld '?' erhalten bleiben.

z.B. konvertieren der Ausdruck c ? p : q zu c something. Die einfache if(c) p else q scheitert meine Kriterien, da es erfordert, dass man if( vor c.

Meinem ersten Versuch (noch mit c/p/q wie oben) ist

c match { case(true) => p; case _ => q } 

andere option, die ich fand, war:

Klasse ternäre(val g: Boolean => Any) { def |: (b:Boolean) = g(b) } 

implizite def autoTernary (g: Boolean => Alle): Dreieck = new Dreieck(g) 

die es mir erlaubt zu schreiben:

c |: { b: Boolean => if(b) p else q } 

Ich mag das Allgemeine Aussehen, die zweite option, aber es ist ein Weg, um es weniger kompliziert?

Dank

InformationsquelleAutor Alex R | 2010-04-24
Schreibe einen Kommentar