文字列リテラル について

読書会で一気に進んだので、復習。
※読書会の内容は、JGGUG 関西支部長の id:kiy0taka:20090426:1240757105 さんがまとめてくれています。


ダブルクォート(")で囲った場合、GString になるらしい。
GString は、変数の値を文字列に埋め込めるので便利そう。

def a = "ABC"
def b = "DEF"
println "1:$a 2:$b" // 結果は 1:ABC 2:DEF

これは C# では無理なのかな。String.Format で似た様な事は出来るけど、ちょっと長い。

string a = "ABC";
string b = "DEF";
Console.WriteLine("1:{0} 2:{1}", a, b); // 結果は 1:ABC 2:DEF

PowerShell なら出来るんだけど。

$a = "ABC"
$b = "DEF"
Write-Host "1:$a 2:$b" # 結果は 1:ABC 2:DEF


Groovy では、シングルクォート(')かダブルクォート(") 3つで囲った文字列は、改行を含める事が可能。

def a = """abcd
efg"""
println a

あと、スラッシュ(/)で囲むと、円マーク(\) のエスケープが不要になる。

def a = "c:\\work\\groovy" // 普通は、\ はエスケープする必要ある。
def b = /c:\work\groovy/
println (a == b) // true

この2つの例は、C# の場合 逐語的文字列リテラル で可能だ。

string a = @"abcd
efg";
Console.WriteLine(a);

string a = "c:\\work\\groovy";
string b = @"c:\work\groovy";
Console.WriteLine(a == b); // True