Dmy*_*iak 51 ruby hash ruby-on-rails destructuring
什么是更短的版本?:
from = hash.fetch(:from)
to = hash.fetch(:to)
name = hash.fetch(:name)
# etc
Run Code Online (Sandbox Code Playgroud)
请注意fetch,如果密钥不存在,我想引发错误.
必须有更短的版本,例如:
from, to, name = hash.fetch(:from, :to, :name) # <-- imaginary won't work
Run Code Online (Sandbox Code Playgroud)
如果需要,可以使用ActiveSupport.
Dyl*_*kow 96
使用Hash的values_at方法:
from, to, name = hash.values_at(:from, :to, :name)
Run Code Online (Sandbox Code Playgroud)
这将返回nil散列中不存在的任何键.
mat*_*uck 27
Ruby 2.3最后介绍了fetch_values直接实现此方法的哈希方法:
{a: 1, b: 2}.fetch_values(:a, :b)
# => [1, 2]
{a: 1, b: 2}.fetch_values(:a, :c)
# => KeyError: key not found: :c
Run Code Online (Sandbox Code Playgroud)
hash = {from: :foo, to: :bar, name: :buz}
[:from, :to, :name].map{|sym| hash.fetch(sym)}
# => [:foo, :bar, :buz]
[:frog, :to, :name].map{|sym| hash.fetch(sym)}
# => KeyError
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25660 次 |
| 最近记录: |