Bug #12851
Updated by ciscoved (Mikhail A) about 9 years ago
Hi! Found this strange issue with gsub! and downcase! methods used together for a string. Example code:
~~~ ruby
def palindrome? (str)
str.gsub!(/\W/, '').downcase!
str == str.reverse
end
puts palindrome?("Madam, I'm Adam!")
~~~
**returns true.** Ok! But...!
if the given string is single word:
~~~ ruby
def palindrome? (str)
str.gsub!(/\W/, '').downcase!
str == str.reverse
end
puts palindrome?("aBba") palindrome?("abba")
~~~
it returns no method error.
hw1_string.rb:13:in `palindrome?': undefined method `downcase!' for nil:NilClass (NoMethodError)
from hw1_string.rb:30:in `<main>'
If the code is refactored like this:
~~~ ruby
def palindrome? (str)
str.gsub!(/\W/, '')
str.downcase!
str == str.reverse
end
puts palindrome?("abba")
puts palindrome?("Madam, I'm Adam!")
~~~
than it worked ok in **both** cases. Why?
I'm new to ruby, and, may be still misunderstood something, but seems that is really a bug.