2013-04-16 3 views
11

Ich erhalte stange Ergebnisse von triple """ Strings in Anführungszeichen, wenn String-Interpolation und Zeilenumbrüche mit:String-Interpolation mit dreifachen Anführungszeichen und mehrere Zeilen

val foo = "bar" 

s"""$foo""" 

Das ist ok.

s""" 
$foo 
"""  

Das ist falsch, ich folgende Ausgabe:

" 
bar 
" 

Warum zum Teufel es Anführungszeichen?

+1

Ist es nicht nur ein '" \ nbar \ n "'? – 4e6

+1

Warum denken Sie, dass es ein Interpolationsproblem ist? '" "" | bar | "" "' (multilineed) gibt Ihnen genau das gleiche Ergebnis (vorangestellt und nachgehängt '\ n' die REPL in Anführungszeichen einschließt) –

Antwort

17

Dies ist nur die REPL umgeben von mehrzeiligen Zeichenfolgen in Anführungszeichen. Sie finden die tatsächliche Zeichenfolge enthält keine Anführungszeichen:

res0.contains("\"") 
res1 : Boolean = false 
+0

Ah, natürlich. Es scheint, dass die REPL zusätzliche Anführungszeichen für String-Ergebnisse druckt, wenn sie sich über mehrere Zeilen erstrecken. (Warum auch immer). Danke –

+4

@ 0__ Die REPL druckt Anführungszeichen, wenn Strings von Leerzeichen umgeben sind, was völlig Sinn macht, um zu sehen, wo ein String beginnt und endet. – sschaef

+1

Es wäre mir konsequenter, * immer * Anführungszeichen zu drucken, es sei denn, Sie verwenden println in der Zeichenfolge. – Blaisorblade

Verwandte Themen