我在项目中使用 Trie ( https://github.com/tyler/trie ) gem 并且喜欢它。但它有一个非常烦人的问题。
has_key?
方法返回 nil
当找不到 key 而不是 false
时(每个以 ?
结尾的方法都应该如此)
我尝试在他们的 GitHub ( https://github.com/tyler/trie/issues/26 ) 上提出问题,但没有成功。
所以,合理的下一步 - 尝试重写该方法。
我将其添加到我的项目中:
class Trie
alias :old_has_key? :has_key?
def has_key?(key)
puts "My new Trie has_key"
old_has_key?(key)
end
end
只是想看看我是否能逃脱惩罚。
不幸的是,当我运行rails console
时我得到:
`<class:Trie>': undefined method `has_key?' for class `Trie' (NameError)
正如我在其他地方发现的那样,这应该可行。知道为什么没有吗?
我在这里缺少什么?位置trie.rb
?还有别的吗?
最佳答案
从您的错误消息来看,您似乎正在调用 Trie
类上的 has_key?
方法,而不是它的实例。如果您创建一个实例,您的代码就可以正常工作:
my_trie = Trie.new
my_trie.has_key?('foo')
# My new Trie has_key
# => nil
关于ruby-on-rails - Trie gem 中的 Ruby 重写方法 - 未定义方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41764631/