In article <200202130049.g1D0nlt11995 / sharui.nakada.kanuma.tochigi.jp>,
  nobu.nakada / nifty.ne.jp writes:

> 試してみて気づいたのですが、こういうのは今の1.7ではエラー(正確
> にはメソッドを探そうとしてる)になります。

おぉ。

>   a &&= a

これはエラーになりません。

% ruby -ve 'a &&= a'
ruby 1.7.2 (2002-02-10) [i386-freebsd4.2]
% 

右辺が評価されないからですかね。

>   b ||= b
>   c += c

こちらはたしかにエラーになりますね。

% ruby -ve 'b ||= b'
ruby 1.7.2 (2002-02-10) [i386-freebsd4.2]
-e:1: undefined local variable or method `b' for #<Object:0x8121378> (NameError)

> 一貫性の点からすれば、単純な代入でも同じようにしたほうがいいと
> 思います。

私もこの一貫性の破れは意図せざるものであるとは思いますが、どちらに合わ
せるべきかはちと微妙なんじゃないかと思います。

今の Ruby 流を貫くなら、むしろ自己代入の挙動を単純な代入に合わせること
になるんじゃないでしょうか。まぁ、それにどんな意味があるかは謎ですけれ
ど。制御の流れに沿ってやるんなら全部ごっそり変えたほうが...
-- 
[田中 哲][たなか あきら][Tanaka Akira]
「ふえろ! わかめちゃん作戦です$(C⊇」(Little Worker, 桂遊生丸)