From: "Peña, Botp" Date: 2007-07-24T14:04:32+09:00 Subject: Re: Is there a replacement for sub? From: bbiker [mailto:renard3411@gmail.com] # str = "hello" # str.downcase!.capitalize! => NoMethodError: undefined method # `captitalize!' for nil:NilClass # # My point is that method chaining is a common ruby idiom and nil # returns get in the way!!! imnsh opinion, bang methods do _not_ look nice on chains. In fact, they look like they cut chains :) use non-bang methods instead. syntax is very clean. these are some stupid examples, irb(main):001:0> "asdf".downcase => "asdf" irb(main):002:0> "asdf".downcase! => nil irb(main):003:0> "asdf".downcase.capitalize.capitalize => "Asdf" irb(main):004:0> "asdf".downcase! => nil irb(main):005:0> "asdf".downcase!.capitalize! NoMethodError: undefined method `capitalize!' for nil:NilClass from (irb):5 from :0 irb(main):006:0> "asdfX".downcase!.capitalize! => "Asdfx" irb(main):007:0> "asdfX".downcase!.capitalize!.capitalize! => nil irb(main):008:0> "asdfX".downcase!.capitalize!.capitalize!.capitalize! NoMethodError: undefined method `capitalize!' for nil:NilClass from (irb):8 from :0 irb(main):009:0> "asdfX".downcase.capitalize.capitalize.capitalize => "Asdfx" kind regards -botp