my_array = {from: 'Jamaica', to: 'St. Martin'}.values_at(:from, :to, :name)
my_array.keys.any? {|key| element.nil?} && raise || my_array
像你這樣要求
my_array = {from: 'Jamaica', to: 'St. Martin', name: 'George'}.values_at(:from, :to, :name)
my_array.keys.any? {|key| element.nil?} && raise || my_array
這將返回數組會引發錯誤。
但OP要求未能在缺少鍵...
class MissingKeyError < StandardError
end
my_hash = {from: 'Jamaica', to: 'St. Martin', name: 'George'}
my_array = my_hash.values_at(:from, :to, :name)
my_hash.keys.to_a == [:from, :to, :name] or raise MissingKeyError
my_hash = {from: 'Jamaica', to: 'St. Martin'}
my_array = my_hash.values_at(:from, :to, :name)
my_hash.keys.to_a == [:from, :to, :name] or raise MissingKeyError
一個重要和沒有提出的問題是。你想從hash到vars重新分配什麼值? –
@MichaelSzyndel我無法解析你的評論。 – sawa
爲什麼你想要做'from = hash.fetch(:from); to = hash.fetch(:to);'...而不是使用'hash [:from]'? –