5 ms·
Java actually does have pattern matching like this: int eval(Expr e) { return switch (e) { case ConstantExpr(var i) -> i; c
by kaashif 3y ago
Java actually does have pattern matching like this:
int eval(Expr e) {
return switch (e) {
case ConstantExpr(var i) -> i;
case PlusExpr(var a, var b) -> eval(a) + eval(b);
case TimesExpr(var a, var b) -> eval(a) \* eval(b);
case NegExpr(var e) -> -eval(e);
// no default needed, Expr is sealed
}
}
But it only got that recently.
- kaba0 3y agoAnd further improvements are expected.
- diarrhea 3y agoWishing that eco system the best then! ADTs and pattern matching are the best thing since sliced bread. Sometimes I wonder: will they become table stakes in the future, or will we wake up to their (currently unknown) downsides in a decade or two? Think of how exceptions are now considered a poor pattern, compared to errors as values.