在Ruby中定义方法时的NoMethodError

时间:2018-02-22 00:50:27

标签: ruby

class PalCheck
  palindromes = [
    "aba",
    "abc"
  ]
  def palindrome?(string)
    string = string.downcase.scan(/\w/)
    string == string.reverse
  end
  palindromes.palindrome?
end

我不断得到NoM​​ethodError,我无法弄清楚原因。

1 个答案:

答案 0 :(得分:0)

为了使用它:

palindromes.palindrome?

将其定义为:

class Array
  def palindrome?
    string = self.downcase.scan(/\w/)
    string == string.reverse
  end
end

或省略self,如:

class Array
  def palindrome?
    string = downcase.scan(/\w/)
    string == string.reverse
  end
end

虽然你可能得到一个不同的no方法错误,因为Array#downcase没有在标准的Ruby设置中定义。