krn*_*krn 7 ruby ruby-on-rails
我有方法:
def self.store(params)
params.each { }
end
Run Code Online (Sandbox Code Playgroud)
如果我传递一个哈希数组,它可以很好地工作:
params = [ { key: 'value' }, { key: 'value' } ]
Run Code Online (Sandbox Code Playgroud)
但是,我可能只想传递一个哈希,而不是哈希数组:
params = { key: 'value' }
Run Code Online (Sandbox Code Playgroud)
什么是最简洁的Ruby方法将哈希转换为哈希数组?
Array()方法是一种确保始终返回数组的方法,但是当传递Hash时,它会被转换为数组本身.
Array({ key: 'value' }) => [[:key, 'value']]
Run Code Online (Sandbox Code Playgroud)
我需要的:
{ key: 'value' } => [ { key: 'value' } ]
Run Code Online (Sandbox Code Playgroud)
有没有很好的方法来实现它,或者我是否必须使用is_a?(Array)进行手动类型检查?
对我来说,最好的解决方案是将方法更改为:
def self.store(*hashes)
params = hashes.flatten
puts params.inspect
end
Run Code Online (Sandbox Code Playgroud)
你可以传递你想要的任何东西.
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'}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1981 次 |
| 最近记录: |