「マクロかつString Interpolation」って何言ってるかわからないですが、つまりそういうことです(どういうことだ)。String Interpolationの中で、マクロ呼べばできるんですね。*1 このblog post
http://hootenannylas.blogspot.com.au/2013/02/syntax-checking-in-scala-string.html
https://bitbucket.org/inkytonik/stringinterp/src
読んで知りました。コンパイル時に正規表現をチェックするマクロなら以下のような感じで簡単に書けるわけですが
使うときに
r("hoge")
というように括弧を付けないといけなくて、通常の
"hoge".r
より微妙に長くなってカッコ悪い!
r"hoge"
と呼び出したい!と前述のblog見て思いついてやったらできました。
だがしかし、
$の文字が含まれていると、先にString Interpolationの構文で認識されてしまって、エラーになって使えません!!!
エスケープするのもダサいし(そもそもできるのか?)なんか無理っぽいですが、$が含まれている場合でもうまくやる方法誰か思いついたら教えてください(´・ω・`)
以下教えてもらった対策を追記
URL String Interpolationの$はあきらめろっていう結論を見た記憶。 \u0024 はいけるんだっけ。ちょっと意味違うけど \Z。\p{eol}をマクロでこれに展開 URL とか。
2013-02-20 10:36:15 via web
@xuwei_k String Interpolationって$を無効にする方法はないんですよね。だったら$$と書くしか…。
2013-02-20 10:36:28 via twmode to @xuwei_k
やっぱりそうなるか・・・
さらに追記
こっちのほうが良さそう
@xuwei_k こうですか!? わかりません>< - URL
2013-02-20 11:17:07 via YoruFukurou to @xuwei_k
なるほど、implicit conversionでできるか・・・ URL 以前、単純にやろうとしたらエラーになったけど、implicit conversionの場合でも、自分でちゃんとTreeを分解して構築すればいけるのか
2013-02-20 11:53:57 via web