ruby-on-rails - Trie gem 中的 Ruby 重写方法 - 未定义方法

标签 ruby-on-rails ruby trie

我在项目中使用 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/

相关文章:

ruby-on-rails - 使 div(td) 成为链接。火腿( rails )

ruby-on-rails - 无法安装 RMagic gem

ruby - 通过元编程生成的 Ruby 代码存储在哪里,是否可以查看/打印?

ruby-on-rails - application.html.erb 根据用户所在的页面呈现不同的部分

java - 序列化和反序列化类似 Trie 的数据结构

ruby-on-rails - Rspec 找不到 ActiveAdmin Controller

ruby-on-rails - 在 Rails 应用程序中集成 Google 日历

python - 从 Python 中 trie 的特定实现中删除单词

python - XCode 3.2 Ruby 和 Python 模板

c - 将递归函数中的几个字符串存储到 struct c