为什么我会得到NameError?

时间:2013-10-16 18:24:50

标签: ruby

我正在尝试清理所有非字符字符串,将其缩小,并比较string.reversestring本身。

def palindrome?
  if self.reverse.gsub(/\W/, "").downcase == self
    return true
  end
end

为什么会出现以下错误?我应该怎样处理downcase方法?

  

NameError:未定义的局部变量或main:Object

的方法`downcase'

1 个答案:

答案 0 :(得分:0)

downcaseString上定义。尝试:

 class String
   def palindrome?
     if self.reverse.gsub(/\W/, "").downcase == self
       true
     else
       false
     end
    end
  end

"radar".palindrome?  # => true
"hi".palindrome?  # => false

但是,要注意猴子修补像String这样众所周知的课程可能会让你完全不知所措。您可以创建String的子类来提供palindrome?方法,而不是上述方法。