2013-04-16 20 views
11

sto ottenendo risultati Stange da triple """ stringhe tra virgolette quando si usa stringa di interpolazione e interruzioni di riga:String interpolazione con le citazioni triple e linee multiple

val foo = "bar" 

s"""$foo""" 

Questo è ok.

s""" 
$foo 
"""  

Questo è sbagliato, ottengo il seguente output:

" 
bar 
" 

Perché diavolo non ci sono virgolette?

+1

Non è solo un '" \ nbar \ n "'? – 4e6

+1

Perché pensi che sia un problema di interpolazione? "" "" | bar | "" "" (multilinea) fornirà esattamente lo stesso risultato (che precede e segue '\ n' che REPL racchiude tra virgolette) –

risposta

17

Questo è solo il REPL che circonda le stringhe su più righe tra virgolette. La stringa attuale non contiene virgolette:

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

Ah, ovviamente. Sembra che il REPL stampa più virgolette per i risultati di stringa quando si estendono su più righe. (Per qualsiasi ragione). Grazie –

+4

@ 0__ Il REPL stampa le virgolette quando le stringhe sono circondate da spazi bianchi, il che ha senso per vedere dove inizia e termina una stringa. – sschaef

+1

Sarebbe più coerente a * sempre * stampare le virgolette, a meno che non si utilizzi println sulla stringa. – Blaisorblade