Hi,
In message "[ruby-talk:6601] Re: Question on sort!"
on 00/11/28, Dave Thomas <Dave / thomases.com> writes:
|> This is very preliminary behavior following
|> a-bang-method-returns-nil-if-it-does-not-modify-the-recevier
|> principle. The behavior shall be more thorough in the future.
|
|Although I see the reason for returning nil on methods such as gsub!,
|is there really any practical reason for doing so on sort! or
|reverse! ? This seems to me to be more of an inconvenience than a help,
|and I'm not sure that any program would have a use for the test.|
|However, I can see a lot of potential problems with programs that try
|to be efficient and sort (or reverse) in place.
|
| ary.sort!.reverse!.each {...
|
|It works fine 99.999% of the time, but occasionally fails with some
|message about some undefined method and nil...
|
|Perhaps we're extending the wrong principle here. Just because _some_
|! methods return nil, should all of them?
OK, OK. Let's discuss.
The principle above have both pro and con.
(+) consistency.
(-) returning nil somtimes breaks method chains.
The latter can be avoided if one follows the no-bang-method-chain
rule. But I don't force you to agree with me (yet ;-).
matz.