09/01/13 10:32:08
>>436
>hash = {}
>[:a, :b, :c].each {|k| hash[k] = @hash[k] }
>という処理をもっと簡単に書く方法があれば教えてください。
たぶん、ない。
class ::Hash
def elems_at(*keys)
h = {}
keys.each {|k| h[k] = self[k] }
h
end
end
とでもして、hash = @hash.elems_at(:a, :b, :c)としとけ。
>>437
>hash = @hash.dup()
これは違うだろ。選択した要素だけを選び出すのであって、要素をすべてコピーするわけではない。
>>440
>hash.merge!(@hash)
上に同じ。
>>442
>hash = Hash[*@hash.find{|k, v| [:a, :b, :c].include?(k)}.flatten]
include? は線形探索だから、それを何度も行うのは効率悪そう