Часто у меня возникает желание создать переменные, ограниченные оператором if. Некоторые вычисления относятся только к определенному утверждению «если» - загрязнение внешнего объема временными переменными пахнет плохо.
Что бы я хотел сделать:
val data = (whatever)
if (val x = data*2+5.4345/2.45; val y = data/128.4; x*y < 10)
x * y
else
x * 2
println(x) //ERROR!
Одна альтернатива довольно грязная:
val data = (whatever)
if (data*2+5.4345/2.45*data/128.4 < 10)
data*2+5.4345/2.45*data/128.4
else
data*2+5.4345/2.45 * 2
Очевидная альтернатива, которую я пытаюсь избежать:
val data = (whatever)
val x = data*2+5.4345/2.45
val y = data/128.4
if (x*y < 10)
x*y
else
x * 2
println(x) //OK
Возможно ли что-то подобное в Scala? Есть ли достойный обходной путь? Если нет, то какие другие языки поддерживают такую идею?