Oft möchte ich Variablen erstellen, die auf eine if-Anweisung beschränkt sind. Einige Berechnungen beziehen sich nur auf eine bestimmte "if" -Anweisung - um den äußeren Bereich mit temporären Variablen zu verseuchen, die schlecht riechen.
Was ich gerne tun würde:
%Vor%Eine Alternative ist ziemlich chaotisch:
%Vor%Die offensichtliche Alternative, die ich vermeiden möchte:
%Vor%Ist so etwas in Scala möglich? Gibt es einen guten Workaround? Wenn nicht, welche anderen Sprachen unterstützen eine solche Idee?
Da if
in Scala ein Ausdruck ist, d. h. er gibt einen Wert zurück, würden Sie normalerweise einen Wert auf das Ergebnis Ihres if
Ausdrucks setzen. Deine dritte Alternative ist also gut: lege sie in einen Codeblock, d. H.
Keine der innerhalb des Blocks deklarierten val
s ist außerhalb davon verfügbar.
Sie können eine Musterübereinstimmung verwenden:
%Vor% result
enthält das Ergebnis von x * y
oder x * 2
, abhängig davon, welche Berechnung ausgeführt wurde, und x
enthält den Wert von data*2+5.4345/2.45
nach Wunsch.
Sie können einen Bereich dafür erstellen ...
%Vor%Oder, um es klarer zu machen,
%Vor%Tags und Links scala