Нет необходимости извлекать выгоду из инициализации двух переменных в один оператор. Сравните с
var val1 = switch(num) { case 0, 1 -> true; default -> false; };
var val2 = switch(num) { case 0 -> "zero!"; case 1 -> "one!"; default -> "unknown :/"; };
Но для полноты новый синтаксис switch
также разрешает присваивания:
boolean val1;
String val2;
switch(num) {
case 0 -> { val1 = true; val2 = "zero!"; }
case 1 -> { val1 = true; val2 = "one!"; }
default -> { val1 = false; val2 = "unknown :/"; }
}
Вы также можете использовать форму выражения для предоставления инициализатора одной переменной и назначьте другой
boolean val1;
String val2 = switch(num) {
case 0 -> { val1 = true; yield "zero!"; }
case 1 -> { val1 = true; yield "one!"; }
default -> { val1 = false; yield "unknown :/"; }
};
, но я не удивлюсь, если вам это не понравится. Для этого конкретного примера c будет также работать просто
var val2 = switch(num) { case 0 -> "zero!"; case 1 -> "one!"; default -> "unknown :/"; };
var val1 = !val2.equals("unknown :/");