Once

Once[expr]

各Wolfram言語セッションで expr を1回評価し,常に最初の評価からの結果を返す.

Once[expr,loc]

expr を1回評価し,結果を永続値の場所 loc にキャッシュする.

詳細とオプション

  • Once[expr]は,セッション内ではじめて使われると,expr を評価してその結果を返す.
  • Once[expr]を続けて評価しても expr は評価されず,expr の初回評価の結果が返される.
  • Onceは属性HoldFirstを有する.
  • Once[expr]Once[expr,"KernelSession"]に等しい.
  • Once[expr,loc]における永続値の場所 loc として以下を使うことができる.
  • PersistenceLocation["type"]"Local""Cloud""FrontEndSession"等の場所
    "type"PersistenceLocation["type"]に等しい
    PersistenceLocation["type","base"]特定のベース(ディレクトリ等)がある場所
    "type""base"PersistenceLocation["type","base"]に等しい
  • Unset[Once[expr]]またはUnset[Once[expr,loc]]は,expr について保存された任意の値を削除する.
  • Onceには次のオプションを使うことができる.
  • ExpirationDate Noneキャッシュの期限
    PersistenceTime Noneキャッシュの存在期間
  • キャッシュした結果が期限切れになったと指定した後でOnce[expr,]を評価すると,expr は再度評価される.

例題

すべて開くすべて閉じる

  (1)

式をOnce内で評価する:

Once[expr]を続けて評価しても最初の結果が返される:

スコープ  (2)

式を1回だけ評価して,結果をローカルファイルに永続的に記憶させる:

1回のフロントエンドセッションにつき1回だけ式を評価する:

カーネルが再起動されても値は記憶されている:

オプション  (2)

ExpirationDate  (1)

記憶されている値が翌年の初めに期限切れとなるように指定する:

PersistenceTime  (1)

Onceの結果を5秒間だけ記憶するように指定する:

指定した時間が終ると値が再計算される:

アプリケーション  (2)

初期化ファイルが1回しか読み込まれないようにする:

時間のかかる評価は,たとえそれが含まれているセルが複数回評価されても,1回しか行わないようにする:

特性と関係  (3)

Once[Get[package]]Needs[package]に似ていて,パッケージが1回しか読まれないようにする:

Onceは属性HoldFirstを有し,未評価の式を比較する:

Onceの評価結果で永続的にキャッシュされたものをすべて求める:

それらを削除する:

考えられる問題  (2)

Once[expr]は,たとえ expr 中の変数が変わっても同一セッション中は二度と評価されない:

Unset[Once[expr]]を使って記憶されている値をクリアする:

おもしろい例題  (1)

動的プログラミングのフォームにOnceを使って再帰を反復に変える:

生成されたキャッシュされた値を求める:

時間測定の実験を再度行う前にキャッシュされた値を削除する:

Wolfram Research (2016), Once, Wolfram言語関数, https://reference.wolfram.com/language/ref/Once.html (2019年に更新).

テキスト

Wolfram Research (2016), Once, Wolfram言語関数, https://reference.wolfram.com/language/ref/Once.html (2019年に更新).

CMS

Wolfram Language. 2016. "Once." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2019. https://reference.wolfram.com/language/ref/Once.html.

APA

Wolfram Language. (2016). Once. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Once.html

BibTeX

@misc{reference.wolfram_2024_once, author="Wolfram Research", title="{Once}", year="2019", howpublished="\url{https://reference.wolfram.com/language/ref/Once.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_once, organization={Wolfram Research}, title={Once}, year={2019}, url={https://reference.wolfram.com/language/ref/Once.html}, note=[Accessed: 22-November-2024 ]}