我有一个像这样的数组:
array = [:a, b: [:c, :d]]
=> [:a, {:b=>[:c, :d]}]
当我尝试使用数组[:b]时,出现此错误:
TypeError (no implicit conversion of Symbol into Integer)
如何从此数组中获取:b元素?
注意:我不想使用索引来做到这一点(array [1])。
答案 0 :(得分:1)
由于它是array
(而不是哈希),因此可以通过其索引获取元素。在此示例中:
array[1]
#=> { :b => [:c, :d] }
答案 1 :(得分:1)
注意:我不想使用索引来做到这一点(array [1])。
environment.setStreamTimeCharacteristic(TimeCharacteristic.EventTime)
或
> array.find{|e| e.is_a?(Hash) && e.has_key?(:b)}
#=> {:b=>[:c, :d]}
对于您的特定示例:
> array.find{|e| e.has_key?(:b) rescue false}
#=> {:b=>[:c, :d]}
答案 2 :(得分:0)
我认为这是解决方案
array.last[:b]
在这种类型的数组中,所有(键:val)值将作为哈希存储在数组的最后一个元素上
例如:
array = [:a, :b, c: [:d], e: [:f], g: [:h]]
=> [:a, :b, {:c=>[:d], :e=>[:f], :g=>[:h]}]
我可以通过以下方式访问:c元素:
array.last[:c]
=> [:d]
或
array.select{|x| x.instance_of?(Hash)}.last[:c]
=> [:d]