From: "no6v (Nobuhiro IMAI)" Date: 2013-06-01T21:26:40+09:00 Subject: [ruby-dev:47385] [ruby-trunk - Bug #8471] パーセント記法とString #メソッドの組み合わせの戻り値が異常 Issue #8471 has been updated by no6v (Nobuhiro IMAI). > 下記のコードを実行すると。''が戻ってきます。 > (%%%%%%%).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番めをいろんな記号に置き換えてみると雰囲気がつかめるんじゃないでしょうか。 ---------------------------------------- Bug #8471: パーセント記法とString #メソッドの組み合わせの戻り値が異常 https://bugs.ruby-lang.org/issues/8471#change-39591 Author: taka-yoshi (taka-yoshi taka) Status: Open Priority: Low Assignee: Category: Target version: ruby -v: ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.1] Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN ***再現手順 下記のコードを実行すると。''が戻ってきます。 (%%%%%%%).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] 特に実害はないと思います。 -- http://bugs.ruby-lang.org/