Project

General

Profile

Bug #12851

Updated by ciscoved (Mikhail A) over 7 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.

Back