簡體   English   中英

Ruby 1.8.7符號數組引發TypeError:將符號作為數組索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM