2010-07-26 7 views

cevap

9

yana çok satırlı dize hazır \u0022 yoluyla kaçan unicode olmaz scala derleyici kadar akıllı olduğunu,

"""Hi, """+"""""""""+"""everyone""" 

iyi bir şeydir: hepsi de aynı üç tırnak olarak değerlendirilebilir çünkü, tek şansın şöyle uç uca ekleyerek, size yardımcı Bunu düzeltin ve böylece derleme sırasında tek bir dizgi yapacaktır.

En azından, scala -print'un söylediği şey budur.

object o { 
    val s = """Hi, """+"""""""""+"""everyone""" 
    val t = "Hi, \"\"\"everyone" 
} 

ve ancak scala -print

Main$$anon$1$o.this.s = "Hi, """everyone"; 
Main$$anon$1$o.this.t = "Hi, """everyone"; 

→ Not kullanarak, ki bunu da girdi bu şekilde yapamam. scala -print çıktılarının biçimi yalnızca dahili kullanım için görünüyor. Yine de bunu yapmanın daha kolay, daha basit bir yolu olabilir.

2

yapamazsın

scala yorumlu metinler ham dizeleri varsa ve bunları eklemek bir dize kullanım dize birleştirme içinde üçlü tırnak gerekirse herhangi kaçış kodlarını kullanmayın

+0

Kaçış karakteri yok mu? O/"/"/"' yapamaz mı? – wheaties

+0

hayır, bir heredoc dize ekleyerek \ veya/önce/"dizesi ama kaçıp" veya "\ eklersiniz" Ayrıca unicode kaçış dizisi kullanabiliriz –

2

Bildiğim kadarıyla üçlü tırnakları kullanamazsınız. spec, bölüm 1.3.5, devletler:

bir çok satırlı dize "" "... ''" üçlü tırnak içinde bir karakter dizisidir. Karakter dizisi, yalnızca sondaki üç veya daha fazla konservatif alıntı karakteri içerebileceği dışında isteğe bağlıdır. Karakterler mutlaka yazdırılabilir olmamalıdır; yeni satırlar veya diğer kontrol karakterlerine de izin verilir. Unicode kaçışları her yerde olduğu gibi çalışır, ancak (§1.3.6) içerisindeki çıkış dizilerinin hiçbiri yorumlanmaz. Bir dizesinde çıkışına üç tırnak istiyorsanız

Öyleyse, hala kaçması ile tek tırnak dizesi kullanabilirsiniz:


scala> val s = "Hi, \"\"\"everyone" 
s: java.lang.String = Hi, """everyone 
+0

normal dizede. –

+0

Yani, bunu heredoc'ta yapmanın bir yolu yoktur. Scala'nın neden desteklemediğini anlamıyorum. – Freewind

+0

@jhominal: Çok satırlı bir dizede üç alıntı karakterini unicode ederseniz hala çalışmayacaksınız. Hala çok satırlı dize literal –

5

posted on a similar question numaralı telefonu tamamen hack ediyorum, fakat burada da çalışıyor: Scala'nın XML yapılarını bir ara biçim olarak kullanın.

val str = <a>Hi,"""everyone</a> text 

Bu, ç çift tırnak işareti içeren bir dize verecektir.

+0

sonu olarak yorumlanacaktır bu çok yararlı, teşekkürler – Freewind

+0

Elbette. Söylemeliyim ki, bundan çok memnun kaldım. ;-) – pr1001