2013-04-16 42 views
11

我使用字符串插值和換行符時獲得STANGE結果從三重"""引用的字符串字符串插值:三重引號和多行

val foo = "bar" 

s"""$foo""" 

這是確定。

s""" 
$foo 
"""  

這是不對的,我得到下面的輸出:

" 
bar 
" 

見鬼,爲什麼會有引號?

+1

是不是隻是一個''\ nbar \ n「'? – 4e6

+1

你爲什麼認爲這是內插問題? 「」「」「 | bar |」「」'(多線)會給你完全相同的結果(REPL用引號括起來的開頭和結尾)\ –

回答

17

這只是REPL圍繞引號中的多行字符串。你會發現實際的字符串不包含引號:

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

啊,當然。看起來,REPL在跨越多行時爲字符串結果輸出額外的引號。 (無論出於何種原因)。謝謝 –

+4

@ 0__當字符串被空白包圍時,REPL打印引號,這對於查看字符串開始和結束的位置是非常有意義的。 – sschaef

+1

除非您在字符串上使用println,否則它會與* always *打印引號更一致。 – Blaisorblade