[ruby-list:38355] Re: String#reverse! のバグ?

From: Tanaka Akira <akr@...17n.org>
Date: 2003-09-03 10:49:31 UTC
List: ruby-list #38355
In article <1062572955.853946.23745.nullmailer@picachu.netlab.jp>,
  matz@ruby-lang.org (Yukihiro Matsumoto) writes:

> * bangメソッドの戻り値は変化したかどうかを知るためにだけ使うべき
> * bangメソッドはchainしてはいけない

本当に、変化したかどうかを知るために「だけ」使うべきという知見をユーザ
に与えたいなら、以前誰かの意見があったと記憶していますが、やはり
true/false を返すというのが効率的なんじゃないでしょうか。

> * bangメソッドには明らかに副作用があるのでchainingは危険

これはよくわかりません。
副作用と chaining にどういう関係があるのでしょうか。

> * 変化したかどうかを効率的に知る方法が他にない(ことが多い)

どういうケースで変化したかどうかを知る必要があるのでしょうか。

gsub! なら perl での 1 while s/.../.../g のような、不動点に達するまで
ループするという例があるのでわかるのですが、sort は一発で確実に不動点
に達しますし、reverse はそもそも最初から不動点になっているか振動するか
なので、gsub! のようなループで使うことは考えられませんし。
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread