JEP draft: Concise Method Bodies - extend this to local functions?
Lukas Eder
lukas.eder at gmail.com
Wed Sep 19 20:44:04 UTC 2018
Hello,
I've just seen this new JEP draft, which really looks very useful:
http://openjdk.java.net/jeps/8209434
Now, given that this would be possible:
int x(String s) -> s.length();
And given that this almost looks like a named lambda expression, could this
maybe be an occasion to re-discuss the possibility of supporting named
lambda expression / local functions?
E.g.
void m() {
// lambda local to m()
ToIntFunction<String> x1 = (String s) -> s.length();
// "method" local to m()
int x2(String s) -> s.length();
// We can now do:
int i1 = x1.apply("abc");
// More concise
int i2 = x2("abc");
}
I know this was discussed for Java 8 and rejected, but given the high
similarity of the currently proposed concise method body syntax and the
lambda syntax, I feel that on a high level, this might appear coherent and
useful.
Of course, in such a case, it would appear useful to allow the original
method body syntax as well in a local method:
void m() {
int x3(String s) {
return s.length();
}
}
Also, many other languages have this feature, e.g. Scala, Ceylon, Kotlin
Thanks,
Lukas
More information about the amber-spec-comments
mailing list