Clojureの文字列リテラル

0
ハイパーむとう @masa_edw

clojureって文字列に16進で文字書けないのかな。"¥x00"みたいなのを書いたら¥xのとこでエラーになった。とりあえず¥xを¥u00にしてユニコード文字ですよーってことにしたけど。

2010-03-26 01:49:45
Toshiaki Maki @making

@masa_edw 用件はなんなんでしょうか?Javaの領域な気もしますが、、リテラルの16進数なら16rffとか

2010-03-26 02:00:46
ハイパーむとう @masa_edw

@making 文字の範囲を示す正規表現[\x5B-\x60\x7B-\x7D]があって、これを#"[\x5B-\x60\x7B-\x7D]"とやるとOKだけど(re-pattern "[\x5B-\x60\x7B-\x7D]")ではダメで、なんでかなーということでした。

2010-03-26 08:20:12
Toshiaki Maki @making

@masa_edw 入力の一文字目が"だったらStringReader、#だったらRegexReaderが呼ばれ、前者は\だった場合エスケープ文字チェックをするのでxはアウト。後者は"の後は終端文字以外はおkです。文字列リテラルで\を使うときは\でエスケープしないとだめです

2010-03-26 12:10:46
Toshiaki Maki @making

@masa_edw よって#"\x00"と(java.util.regex.Pattern/compile "\\x00")は等価です。 http://bit.ly/aAfZ2W この辺参照

2010-03-26 12:12:15
Toshiaki Maki @making

@masa_edw そもそも#リーダマクロは"\\s"とか書くのがめんどいから作ったようなもんでしょうからねw

2010-03-26 12:14:38
Toshiaki Maki @making

「後者は\の後」の間違い @making: @masa_edw 入力の一文字目が"だったらStringReader、#だったらRegexReaderが呼ばれ、前者は\だった場合エスケープ文字チェックをするのでxはアウト。後者は"の後は終端文字以外はおkです。文字列リテラルで\を使

2010-03-26 12:16:55
ハイパーむとう @masa_edw

@making "\r\n"みたいなのは文字列としても有効なので、そういうノリで16進表記が使えたらなぁと思ったんですが、よくよく考えると文字列のまま\x00みたいなのを持っておく必要があるので\\x00みたいにすることにします。thx!

2010-03-26 12:21:43
Toshiaki Maki @making

@masa_edw http://bit.ly/cN31ky のswitch文に入ってるやつなら大丈夫ですねw Javaと同じか。

2010-03-26 12:29:37