我在类中有以下Ruby代码块:
def self.blacklisted_keywords
%w(acquista acquistiamo acquisto acquistano compro compriamo comprano)
end
private
def item_valid?
keywords = blacklisted_keywords
end
为什么我不能在没有得到的情况下调用blacklisted_keywords
:“undefined method`blacklisted_keywords'”?我做错了什么?
答案 0 :(得分:1)
因为blacklisted_keywords
不是实例方法,而是类方法。keywords = blacklisted_keywords
意味着ruby将其隐式地视为keywords = self.blacklisted_keywords
。这会导致错误,因为它不是实例方法。将keywords = blacklisted_keywords
替换为keywords = self.class.blacklisted_keywords
答案 1 :(得分:0)
根据提供的答案,如果您不需要改变它们,也许将关键字保持为常数是有意义的。
class Blah
BLACKLISTED_KEYWORDS = %w(acquista acquistiamo acquisto acquistano compro compriamo comprano)
private
def item_valid?
keywords = BLACKLISTED_KEYWORDS
end
end