私はキャッシュを持っており、キャッシュからアイテムを取得してアイテムをキャッシュに入れる2つの機能を持っています。機能的な入手方法または更新方法
(キャッシュから)アイテムを取得するときに、キーが存在しない場合、値を入力してその値を返す必要があります。続き
は、ここで私はget(id)
機能の単一責任の原則(SRP)に違反していて、サンプルコード
class CacheComp {
cache = Map[String, Foo]
get(id): Foo = {
// case(id exists) => Return matching Foo
// case(id not exists) => Create a Foo and update the cache with created Foo. Then return updated Foo
}
put(id, Foo) = {
// put element to the cache
}
}
です。どのようにSRPに違反することなくこれを行うには?私は単に関数をgetOrUpdate(id)
に改名することができます。しかし、それを行うためのクリーンな関数型プログラミングの方法はありますか?あなたが達成したい何
私はこれを見たことがない:)素敵なもの。 – sebszyller