Как вы знаете, в Java 14 появились выражения Switch, операторы переключения, которые возвращают значение. (См. JEP 361.)
Но, похоже, он не работает с операторами case, имеющими блоки кода. Я не уверен, что у меня неправильный синтаксис или это запрещено.
Мне любопытно, потому что это будет несовместимо с операторами переключения без r-значения (первый пример) . Плюс я видел это на других языках.
static void foo(String x) {
// this works
switch(x) {
case "hi" -> {
System.out.print("got hi");
System.out.println("hello");
}
default -> System.out.println("bye");
}
// this works
var y = switch(x) {
case "hi" -> "hello";
default -> "bye";
};
// is this possible?
var z = switch(x) {
case "hi" -> {
System.out.println("got hi");
return "hello"; // return "hello" to the z
}
default -> "bye";
};
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... ns-a-value