do expression
Tagir Valeev
amaembo at gmail.com
Tue Mar 24 02:23:10 UTC 2020
Hello!
Now we have a legal way to execute several statements within an expression,
yielding the result with a yield statement. This could be done via `switch`
expression.
Sometimes it's desired to do this without any switch. One may abuse the
switch expression feature writing `switch(0) { default -> { ... code block
ending with 'yield' }}`.
How about creating a special syntax for such kind of expression. It could
look like `do { ... code block ending with 'yield' }`?
E.g. consider:
class X {
static final String field;
// now we are forced to split field declaration and initialization
// also initializer could be long and it could be not evident that its
main purpose
// is to initialize the field
static {
try {
field = initializeField();
}
catch(CheckedException e) {
throw new RuntimeException(e);
}
}
}
Since Java 14 we can write
class X {
// field declaration and initialization in the same place: easier to
navigate through code
// though we are abusing the switch expression
static final String field = switch(0) { default -> {
try {
yield initializeField();
}
catch(CheckedException e) {
throw new RuntimeException(e);
}
}};
}
It could be like
class X {
// concise syntax. Now we know that the main block purpose
// is to initialize the field
static final String field = do {
try {
yield initializeField();
}
catch(CheckedException e) {
throw new RuntimeException(e);
}
};
}
It's similar to Perl 'do BLOCK' expression
https://perldoc.perl.org/functions/do.html
What do you think?
With best regards,
Tagir Valeev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.java.net/pipermail/amber-spec-experts/attachments/20200324/bf64d1ea/attachment.htm>
More information about the amber-spec-experts
mailing list