At the string literal level doesn't do anything, but the standard library adds an extension method to string called `stripMargin`. This has some nice examples https://www.oreilly.com/library/view/scala-cookbook/97814493...
The indentation is removed at compile time, per the JLS: https://docs.oracle.com/javase/specs/jls/se15/html/jls-3.htm...
> Incidental white space is removed, as if by execution of String.stripIndent on the characters resulting from step 1.
The new stripIndent() method is provided as a convenience to developers.
Re:JDK 15
by Nullabillity on Tuesday September 15, 2020 @01:34PM
(#24484086)
That's for Java, the parent is talking about Scala.
It helps that Java is exclusively a compiled programming language, so these are just syntactic sugar concerns for the parser/lexer and the compiled bytecode ends up looking identical to having just used one long string with inline \n.
So given that, I don't think it really ends up being that sophisticated. I think this could be a decent easy programming question for a technical interview though!
Re:JDK 15
by dfinninger on Tuesday September 15, 2020 @01:34PM
(#24484095)
I had to use this recently for an online course. It was super nice:
def pushConstant(num: Int): String =
s"""
|@$num
|D=A
|$accessTopOfStack
|M=D
|$incrementStackPointer
|""".stripMargin
accessTopOfStack and incrementStackPointer are other functions that return text. It made composing Assembly a breeze.
Re:JDK 15
by rad_gruchalski on Tuesday September 15, 2020 @05:29PM
(#24486910)
Yup, and itβs super nice for json or yaml strings.
https://openjdk.java.net/jeps/378
I'm not entirely sure "most sophisticated" is entirely a good thing - but the jep looks pretty thorough at least.
Ed: how does Scala do it? Java uses the indents for the closing triple-quote to determine stripping/indent + cutting trailing spaces. Ie, if my reading is correct:
Is "OK.\n" (even if there are any spaces after the dot).