【发布时间】:2017-12-05 11:31:59
【问题描述】:
我有一个对象(从 API 返回),它可以是散列,也可以是散列数组。如果它还不是一个数组,我想将它包含在一个数组中。
我尝试在其上应用Array,它以预期的方式与数字或数组一起发挥作用:
Array(1) # => [1]
Array([1, 2]) # => [1, 2]
Array([{a: 1}, {b: 2}]) # => [{:a=>1}, {:b=>2}]
但它因散列而失败:
Array({a: 1}) # => [[:a, 1]]
应该是[{:a=>1}]。
或者,我可以添加一个类型检查:
responses = [responses] if responses.is_a?(Hash)
有没有更好的解决方案?
【问题讨论】:
-
[responses].flatten. -
另外
ActiveSupport介绍了Array#wrap,它完全符合您的要求。 -
@mudasobwa 完美,
Array#wrap是我的选择。 -
“散列或散列数组” – 是否有机会修复 API?
标签: arrays ruby activesupport