gpt4 book ai didi

ruby-on-rails - 接受散列或散列数组作为 Ruby 方法的参数

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:13 26 4
gpt4 key购买 nike

我有方法:

def self.store(params)
params.each { }
end

如果我传递一个哈希数组,它会完美地工作:

params = [ { key: 'value' }, { key: 'value' } ]

但是,我可能只想传递一个散列,而不是散列数组:

params = { key: 'value' }

将哈希转换为哈希数组的最简洁的 Ruby 方法是什么?

Array() 方法可确保始终返回数组,但在传递 Hash 时,它本身会转换为数组。

Array({ key: 'value' }) => [[:key, 'value']]

我需要什么:

 { key: 'value' } => [ { key: 'value' } ]

有什么好方法可以实现这个,还是我必须用 is_a 进行手动类型检查?(数组)?

最佳答案

对我来说,最好的解决方案是将方法更改为:

def self.store(*hashes)
params = hashes.flatten
puts params.inspect
end
  • 如果您传递单个散列,它将是一个数组
  • 如果你传递一个散列数组,它保持不变
  • 如果您传递 N 个哈希值,它会将所有参数压缩到一个一维数组中。

你想传什么就传什么

self.store({:key => 'value'}) # => [{:key => 'value'}]
self.store({:key => 'value'}, {:foo => 'bar'}) # => [{:key => 'value'}, {:foo => 'bar'}]
self.store([{:key => 'value'}, {:foo => 'bar'}]) # => [{:key => 'value'}, {:foo => 'bar'}]

关于ruby-on-rails - 接受散列或散列数组作为 Ruby 方法的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11939383/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com