Hashのnewの時に渡したblockは、Hashにキーがまだ含まれていないときの初期値を定義します。
これを利用してみました。
case - when 式も練習してみました。
h = Hash.new do |hash, key|
hash[key] = case key
when 0 then 0
when 1 then hash[0] = 0 unless hash.has_key?(0); 1
else hash[key-1] + hash[key-2]
end
end
puts h[100]
p h.values
hash[key] = case key
when 0 then 0
when 1 then hash[0] = 0 unless hash.has_key?(0); 1
else hash[key-1] + hash[key-2]
end
end
puts h[100]
p h.values
$ ruby -v
ruby 2.0.0p645 (2015-04-13 revision 50299) [x86_64-darwin14.4.0]
class Hashによると、「ハッシュに含まれる要素の順序が保持されるようになりました。 ハッシュにキーが追加された順序で列挙します。」とのことなので、h.valuesで順番通りのArrayインスタンスが得られています。
class Hashによると、「ハッシュに含まれる要素の順序が保持されるようになりました。 ハッシュにキーが追加された順序で列挙します。」とのことなので、h.valuesで順番通りのArrayインスタンスが得られています。
0 件のコメント:
コメントを投稿