でHash.new
ブロックを取って、次のようにキャッシュを作成することが可能です。
cache = Hash.new do |hash, key|
hash[key] = expensive_calculation(key)
end
なぜそんなに複雑なのですか?
cache = Hash.cache do |key|
expensive_calculation(key)
end
このようなバージョンは、1つの引数のみがブロックに渡されるため、より高速になります。私の経験から、これはかなりの違いを生みます。
あなたの提案は、ブロックがキーごとに1回だけ評価され、その値がキーに対してキャッシュされることを意味します。
ただし、この機能を使用する方法はそれだけではありません。同じキーの値を複数回計算したい場合があります。あなたの提案では、それはできません。それは柔軟性に欠けています。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加