Код: Выделить всё
private sealed interface Opt permits ShortOpt, LongOpt, MiscOpt {}
record ShortOpt(char opt) implements Opt {} // the "a", "b", or "c" in "-abc"
record LongOpt(String opt) implements Opt {} // the "option" in "--option"
record MiscOpt(String etc) implements Opt {} // something argument with no hyphens
Код: Выделить всё
switch(opt) {
case ShortOpt(char c) when c == 'h' ->
printHelp();
case LongOpt(String s) when s.equals("help") ->
printHelp();
case ShortOpt(char c) when c == 'V' ->
printVersion();
case LongOpt(String s) when s.equals("version") ->
printVersion();
default ->
System.out.println("Unrecognized option: " + opt);
}
Код: Выделить всё
switch(opt) {
// 👇 syntax error
case ShortOpt(char c) when c == 'h', LongOpt(String s) when s.equals("help") ->
printHelp();
case ShortOpt(char c) when c == 'V', LongOpt(String s) when s.equals("version") ->
printVersion();
default ->
System.out.println("Unrecognized option: " + opt);
}
Пробовал запятую, трубу (как в Rust), двойную трубу. Посмотрел JEP, но там, похоже, ничего не говорится о блоках с несколькими регистрами
Подробнее здесь: https://stackoverflow.com/questions/785 ... ple-guards
Мобильная версия