From: matz@... (Yukihiro Matsumoto) Date: 2000-02-04T09:40:05+09:00 Subject: [ruby-dev:9072] Re: bang method returns string always まつもと ゆきひろです In message "[ruby-dev:9070] Re: bang method returns string always" on 00/02/04, Wakou Aoyama writes: |> (1) tr!などは変化しないときnilを返すように戻す |> (2) 変化の有無が知りたいときはno bang methodを使い、 |> original と比較する | |(3) tr! などには(も)引数を増やして、nil (または、例外?)を返すようにも | できるようにする。s.tr!("abc", "ABC", true) とか。 | |元の文字列との比較というのは、場合によっては結構重くなりませんか? |そうで無いのならかまいませんが、重くなる可能性があるのならば、比較無し |に変化の有無を知る方法も欲しいです。 うーん、変化を知りたいケースはそれほど無かろうという判断なの ですが。引数を増やすのはできるだけ避けたいです。とはいえ、最 善を検討したいですね。 |とりあえず shellwords.rb は、こんな感じでしょうか。パッチの方が長くなっ |てしまうので、そのまま。ArgError --> ArgumentError の修正と、Array#+= |--> Array#push, String#+= --> String#concat による高速化、そして、引数が |nil, false だった場合に '' を返していたのを、型チェックに変更して、 |String 以外の場合は例外としてみました。 取り込みます。