[英]Ruby 1.8.7 Array of symbols raising TypeError: Symbol as array index
我最近為 travis上的寶石創建了一個拉取請求,該寶石是在travis上針對較舊的紅寶石版本構建的,以實現向后兼容性。
在我的提交中,我想介紹一些作為哈希參數傳遞的方法選項的白名單。
在具有最新Ruby版本的Rails中,它看起來像:
MY_WHITELIST = %i(a b c)
def my_method(options={})
@options = options.slice(*MY_WHITELIST)
end
為了授予獨立gem的向后兼容性,我提供了以下解決方案:
MY_WHITELIST = [:a, :b, :c]
def my_method(options={})
@options = options.select { |k, _| MY_WHITELIST.include?(k) }
end
此通行證適用於紅寶石1.9.3
但針對1.8.7
引發以下異常:
TypeError: Symbol as array index
根據文檔 ,應采用這種初始化數組的方式。
您曾經使用過嗎? 你有什么建議?
如@mr_sudaca的評論所建議,解決方案是在數組上進行選擇:
Hash[options.to_a.select { |k, _| MY_WHITELIST.include?(k) }]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.