Module

Module[{x,y,},expr]

expr における記号 x, y, を局所的に取り扱うように指定する.

Module[{x=x0,},expr]

x, に初期値を定義する.

詳細

  • Moduleを使って,このモジュールに局所的な名前を持った局所変数を設定することができる.
  • Moduleは,呼び出されるごとにその局所変数を表す新たな記号を生成する.
  • Moduleは,名前 xxx の局所変数を表すため,名前を xxx$nnn とする記号を作成する.この数nnn は,$ModuleNumberの現在の値である.
  • $ModuleNumberの値は,モジュールが使用されるたびに増分される.
  • Moduleは,式 expr を評価するのに先駆けて,スコープ構成の局所変数を除く expr に現れるすべての変数を,新たな記号の局所変数で置き換える.
  • Moduleによって作成される記号は,属性はTemporaryを持つ.
  • Moduleによって作成される記号をモジュールから返すことができる.
  • 条件が付随した変換規則の右辺としてModule[{vars},body/;cond]を使用することができる.
  • Moduleは属性HoldAllを持つ.
  • Module構文は,任意の形にネストさせることができる.内側の変数は必要に応じて改名される.
  • Moduleはレキシカルスコープを実装するスコープ構文である.

例題

すべて開くすべて閉じる

  (1)

アプリケーション  (2)

局所関数を持つ動的なプログラミング:

初期化された局所変数を使ったGCDのためのユークリッドアルゴリズム:

特性と関係  (8)

モジュールが評価されるたびに新たな一時的シンボルが作られる:

モジュールシンボルは一時的なものであり,参照されなくなると取り除かれる:

Moduleを使うたびに$ModuleNumberが増分される:

局所変数に割り当てる必要がなければ,代りに定数が使われるべきである:

WithModuleよりも高速である:

Blockは値のみを局所化する.新たなシンボルは作らない:

UniqueModuleと同じような方法で新たな変数を作る:

局所変数は大域変数の影響を受けず,大域変数は局所変数の影響を受けない:

Moduleのスコープに持ち込まれたシンボルは名前の不一致による影響を受けない:

考えられる問題  (3)

Moduleはスコープ構文である.内側の局所変数が外側のものを隠蔽する:

ネストしたスコープでは変数の名前が変えられる:

名前の付け直しを防ぐため,関数をその一部から構築する:

並行割当てはModule変数には適用できない:

Wolfram Research (1991), Module, Wolfram言語関数, https://reference.wolfram.com/language/ref/Module.html.

テキスト

Wolfram Research (1991), Module, Wolfram言語関数, https://reference.wolfram.com/language/ref/Module.html.

CMS

Wolfram Language. 1991. "Module." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Module.html.

APA

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

BibTeX

@misc{reference.wolfram_2024_module, author="Wolfram Research", title="{Module}", year="1991", howpublished="\url{https://reference.wolfram.com/language/ref/Module.html}", note=[Accessed: 26-April-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_module, organization={Wolfram Research}, title={Module}, year={1991}, url={https://reference.wolfram.com/language/ref/Module.html}, note=[Accessed: 26-April-2024 ]}