1
我有一個字符串,我只是想檢查它是否是一個「模範」 ......所以搜索後,我找到了一個方法:檢查常量是否被定義的正確方法是什麼?
'any_name'.classify.constantize
但是...當它是不是一個有效的型號名稱,它拋出以下錯誤:
NameError (wrong constant name AnyName):
於是,我就做到以下幾點:
if Object.const_defined?('AnyName')
#...
end
# I also tried this:
Object.const_get('AnyName')
但同樣,這兩個以上選項返回相同的錯誤:
NameError (wrong constant name AnyName):
const_defined
不應該只返回true/false而不是拋出一個錯誤?
目前,我發現這個醜陋的解決方法:
'any_name'.classify.constantize rescue nil
但據我所知它不被認爲是一個很好的做法(也rubocop聲稱這個)。
所以,我的問題是...有沒有一種安全的方法來做到這一點?
感謝。這就是我想要的:)順便說一句,你能告訴我爲什麼'Object.const_defined?'返回錯誤而不是簡單的'true/false'嗎? –
此鏈接可以更好地解釋你的問題.const_defined? https://stackoverflow.com/a/5758492/938947 – widjajayd