From: Florian Gross Date: 2005-03-20T02:49:54+09:00 Subject: Re: strip and its evil brother strip! Glenn Parker wrote: >> This is by design. The destructive forms of built-in methods usually >> return nil when they do nothing. > > Yup, my bad. I know (really!) that this is by design, but I got myself > confused while writing such a simple reply. > > For me, chaining methods is part of the Ruby way. Sacrificing the > ability to easily chain method! calls was a mistake, IMHO. I still trip > over this anomoly, and not once have I needed the functionality that > took its place. I tend to disagree as destructive methods are not supposed to be chained. They are optimized forms when you would be doing a variable assignment, IMHO. So they are optimizations for this case: a = a.strip But not for this case: puts a.strip While you might argue that modifying a String can be faster than constructing a new one based on the old one, I still think that that is not what matz had in mind when adding them. I'm not sure if this truly is how this feature was meant to be used so it's probably best to take this with a grain of salt until matz has clarified the situation.