Bug #8471
closedパーセント記法とString #メソッドの組み合わせの戻り値が異常
Description
***再現手順
下記のコードを実行すると。''が戻ってきます。
(%%%%%%%).nil? => ''
上記ではnil?を取り上げましたが、
実際は全メソッドで''が戻ってきます。
この戻ってきたものに対して各種メソッドを呼んでも''が返ってきます。
%%%%%%%.class.class.class.class => ''
下記の環境で確認しています。
ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.1]
ruby 1.9.3p392 (2013-02-22 revision 39386) [x86_64-darwin12.2.1]
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
ruby 2.0.0p0 (2013-02-24) [x64-mingw32]
特に実害はないと思います。
Updated by no6v (Nobuhiro IMAI) about 11 years ago
下記のコードを実行すると。''が戻ってきます。
(%%%%%%%).nil? => ''
これは false が返るんじゃないでしょうか?
この戻ってきたものに対して各種メソッドを呼んでも''が返ってきます。
%%%%%%%.class.class.class.class => ''
これは、%%% % %%%.class と解釈されて、%%% は %() などと同じく(空)文字列のリテラルで、
"" % xxx だと、xxx が(多分)何であろうと空文字列が返るので、特におかしなところはないと思います。
$ ruby -rripper -rpp -ve 'pp Ripper.lex("%%%%%%%.class")'
ruby 2.1.0dev (2013-06-01 trunk 41011) [x86_64-linux]
[[[1, 0], :on_tstring_beg, "%%"],
[[1, 2], :on_tstring_end, "%"],
[[1, 3], :on_op, "%"],
[[1, 4], :on_tstring_beg, "%%"],
[[1, 6], :on_tstring_end, "%"],
[[1, 7], :on_period, "."],
[[1, 8], :on_ident, "class"]]
2番めと3番め、6番めと7番めをいろんな記号に置き換えてみると雰囲気がつかめるんじゃないでしょうか。
Updated by no6v (Nobuhiro IMAI) about 11 years ago
2番めと3番め、6番めと7番めをいろんな記号に置き換えてみると雰囲気がつかめるんじゃないでしょうか。
「2番めと3番め、6番めと7番めの % を」という意味でした。
$ ruby -rripper -rpp -ve 'pp Ripper.lex("%()%%!!.class")'
ruby 2.1.0dev (2013-06-01 trunk 41011) [x86_64-linux]
[[[1, 0], :on_tstring_beg, "%("],
[[1, 2], :on_tstring_end, ")"],
[[1, 3], :on_op, "%"],
[[1, 4], :on_tstring_beg, "%!"],
[[1, 6], :on_tstring_end, "!"],
[[1, 7], :on_period, "."],
[[1, 8], :on_ident, "class"]]
Updated by taka-yoshi (taka-yoshi taka) about 11 years ago
no6v (Nobuhiro IMAI) wrote:
2番めと3番め、6番めと7番めをいろんな記号に置き換えてみると雰囲気がつかめるんじゃないでしょうか。
「2番めと3番め、6番めと7番めの % を」という意味でした。
$ ruby -rripper -rpp -ve 'pp Ripper.lex("%()%%!!.class")'
ruby 2.1.0dev (2013-06-01 trunk 41011) [x86_64-linux]
[[[1, 0], :on_tstring_beg, "%("],
[[1, 2], :on_tstring_end, ")"],
[[1, 3], :on_op, "%"],
[[1, 4], :on_tstring_beg, "%!"],
[[1, 6], :on_tstring_end, "!"],
[[1, 7], :on_period, "."],
[[1, 8], :on_ident, "class"]]
ご回答ありがとうございます。
すみませんおっしゃるとおりでした。
正常な動作です。
Updated by okkez (okkez _) about 11 years ago
- Status changed from Open to Rejected
正常な動作ということなので rejected にしますね。