我在項目中使用Trie(https://github.com/tyler/trie)gem,並且喜歡它。但它有一個問題真的很煩人。Trie gem的Ruby重寫方法 - undefined方法
has_key?
方法返回nil
關鍵時沒有發現的,而不是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
的位置?還有別的嗎?
的斷言方法最普遍接受的定義是,它返回一個truthy或falsey值。在大多數情況下,將'nil'作爲一個虛假的值返回工作得很好。如果你在'如果trie.has_key?'('whatever')這樣的條件下使用它,它就像'false'會返回一樣。 –
最明顯的例子是'defined?'操作符(雖然在技術上不是一種方法),它返回'nil'作爲未定義的,並且一個字符串描述了否則的定義。 –
好吧,什麼是正確的是有爭議的,但即使他們的文檔是錯誤的,因爲他們說,該方法返回「真/假」,而不是。 我知道它在大多數情況下都能正常工作,但當您試圖將它與其他布爾值進行比較時,它不起作用。 我的問題仍然存在,爲什麼我得到這個錯誤,這是令我困惑的。 – Milan