作者: WATANABE Hirofumi
日時: 2004/9/15(23:07)
わたなべです。

"T.Watanabe" <wtnabe@...> writes:

>   なのにリファレンスなどでは Regexp =~ string な形の記述が当然のように書
> かれています。これはなぜでしょうか?  まぁ「オブジェクト.メソッド」とい
> う書き方からするとこの順番で書いた方が統一が取れていますが、じゃあなぜ逆
> に置いても動いちゃうのよ、というのも気になります。

内部的にはString =~ RegexpはRegexp =~ Stringとして解釈されます。

> それならそれでリファレンスマニュアルなどに一言加えておいてもらえるとよい
> のではないかと思うのですが、どんなもんでしょうか?

いやもちろんあります。
http://www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=String#self.20.3d.7e.20other

self =~ other

    正規表現 other とのマッチを行います。マッチが成功すれば
    マッチした位置のインデックスを、そうでなければ nil を返
    します。

    組み込み変数 $~ にマッチに関する情報が設定されます。

    other が正規表現でも文字列でもない場合は

    other =~ self

    を行います。

    ruby 1.8 feature: 以前までは、other が文字列であった場合
    にはこれを正規表現にコンパイルして self に対するマッチを
    行っていました。1.8 以降は、 other に文字列を指定したと
    きには例外 TypeError が発生します。

-- 
わたなべひろふみ