On 30/09/2019 16:59, Brian Goetz wrote:
One is pedagogical; I think a world where single line strings are denoted by a
single double quote, whereas multi line strings are denoted by triple double
quotes is a relatively wimple world for the user to grok. This proposal
effectively blurs the line between the two variants, as now you can (in the
degenerate case where all lines in a text block ends with '\') express a single
line string with a text block syntax - which I understand is the part of the
goal, but…
In some sense, the line was already blurry, because existing “single line
strings” could have embedded \n newlines in them. IMO a better pedagogical
model is “one dimensional vs two dimensional” string literals, but this may be
a hard sell.
In a world without \n, I think it would still be pedagogically simple: a “legacy”
string literal is a single line of OUTPUT, and a text block can have multiple lines
of output. The presense of \<nl> merely changes how the _input_ is organized.
My conclusion is that, while the clamoring that inspired us to do this feature
is “give us multi-line strings”, to the extent we continue to call them
multi-line strings, we play into this confusion.
I don't disagree, but JEP 355 starts off with:
```
Add /text blocks/ to the Java language. A text block is a multi-line
string literal that avoids the need for most escape sequences,
automatically formats the string in a predictable way, and gives the
developer control over format when desired. This is a preview language
feature <https://openjdk.java.net/jeps/12> in JDK 13.
```
Now, I get the subtle distinction between multi-line in the source and
multi-line in the result value - but it's subtle, and I think the JEP
should at least be made clearer in that respect.
Maurizio