{Memoizer-of domain:Type, range:Type} (クラス)
public Memoizer-of
パッケージ: CURL.LANGUAGE.CONTAINERS

1 つの引数を持つ関数を計算した結果を記憶 (キャッシュ) します。

プログラミング注意事項

このオブジェクトは、関数に対応する入出力値のペアを含めたテーブルを維持します。関数は必要に応じて呼び出され、テーブルに含まれます。スペース効率上、実装はテーブル エントリを削除 (破棄) するための権限をいつでも確保し、 Memoizer-of.get への特定の呼び出しがキャッシュを使用するか、関数を呼び出すのかを保証しません。

注意事項

range がオブジェクト タイプでない場合 (int など)、不明確なエラーを通知します。
domain: 関数に対する引数のタイプ。
range: 関数の戻り値のタイプ。

{value
    let big-maker =
        {new {Memoizer-of int, BigThing},
             {proc {x:int}:BigThing
                 {return {new BigThing, x}}
             }}
    let big-one = big-maker[0]
    let big-two = big-maker[1]
    let big-three = big-maker[0]
    {format "%s %s %s", big-one, big-two, big-three}
}


big-one、big-two、big-three はそれぞれ、BigThing のインスタンスです。ただし、メモライザは、呼び出しの結果を記憶して、後で再び返すことができるので、big-oneと big-three は同じインスタンスである可能性が高くなります。

コンストラクタ
default:
コンストラクタ public {Memoizer-of.default func:{proc-type {domain}:range}}

メソッド
flush-memos:記憶されたすべてのデータを破棄します。
public {Memoizer-of.flush-memos}:void
get:関数を呼び出すか、同じ引数を持つ以前の呼び出しの結果を返します。
public {Memoizer-of.get key:domain}:range
set:要素の値を設定します。
public {Memoizer-of.set key:domain, value:range}:void
メソッド 継承 Object: object-describe, object-describe-for-debugging, object-serialize



コンストラクタ詳細
default (コンストラクタ)
public {Memoizer-of.default func:{proc-type {domain}:range}}
func: 関数の出力は記憶されます。






メソッド詳細
flush-memos (メソッド)
public {Memoizer-of.flush-memos}:void

記憶されたすべてのデータを破棄します。



get (メソッド)
public {Memoizer-of.get key:domain}:range

関数を呼び出すか、同じ引数を持つ以前の呼び出しの結果を返します。

key: 関数に対する引数


set (メソッド)
public {Memoizer-of.set key:domain, value:range}:void

要素の値を設定します。

key: 設定する要素のキーの値。
value: key に関連付ける値。

説明

keyself に存在する場合、このメソッドは value に関連付けられた要素の値を変更します。keyself に存在しない場合、このメソッドは新しい要素 (keyvalue) を self に追加します。

他の Memoizer-of マッピングのように、set を使って作成されたマッピングはいつでも破棄できます。