こんばんは、kouyaです。 Stringのリファレンスマニュアルを書いています。 ruby 1.9 での下記の動作は1.8とは異なるようですが、 仕様がかわったということでよろしいでしょうか。 よろしくお願いします。 $ ruby -ve 'p "".intern' ruby 1.8.6 (2007-09-24 patchlevel 111) [i686-darwin9.2.0] -e:1:in `intern': interning empty string (ArgumentError) from -e:1 $ ruby-1.9.0-0 -ve 'p "".intern' ruby 1.9.0 (2007-12-25 revision 14709) [i686-darwin9.2.0] :"" ---------- 転送されたメッセージ ---------- 差出人: Anonymous <redmine / ruby-lang.org> 日付: 2008/07/31 8:59 件名: [ReferenceManualRenewalProject - Bug #379] (Open) String#intern は空文字列に使えない(Ruby 1.8) -- Ruby 1.9 は違うのでは 宛先: ruby-reference-manual / ml.fdiary.net チケット #379 が報告されました。 (by Anonymous) ---------------------------------------- Bug #379: String#intern は空文字列に使えない(Ruby 1.8) -- Ruby 1.9 は違うのでは http://redmine.ruby-lang.org/issues/show/379 起票者: Anonymous ステータス: Open 優先度: Normal 担当者: taifu kouya カテゴリ: doc Target version: reporter: rock ruby_version: 1.8,1.9 Bug #370 で, Ruby 1.8 では,"".intern がエラーになりますが,そのことが String#intern に書いてありません。 と書いたところ,修正してくださったのですが,全バージョンで同じように直されています。 しかし,手許の Ruby 1.9 では,"".intern はエラーにならず,:"" が返されます。仕様が変わった のではないでしょうか。 なお,ArgumentError が発生する条件を [EXCEPTION] のところに記述しているので,本文中の ナルキャラクタ ("\0") を含む文字列を intern すると例外 ArgumentError が発生します。 は不要ではないでしょうか。(残すのならこちらにも空文字列のことを書くべきでしょう) ※メンバー外の者はチケットに注記できないようなので,コピーで失礼します。 ---------------------------------------- http://redmine.ruby-lang.org -- kouya