Module
詳細
- Moduleを使って,このモジュールに局所的な名前を持った局所変数を設定することができる.
- Moduleは,呼び出されるごとにその局所変数を表す新たな記号を生成する.
- Moduleは,名前 xxx の局所変数を表すため,名前を xxx$nnn とする記号を作成する.この数nnn は,$ModuleNumberの現在の値である.
- $ModuleNumberの値は,モジュールが使用されるたびに増分される.
- Moduleは,式 expr を評価するのに先駆けて,スコープ構成の局所変数を除く expr に現れるすべての変数を,新たな記号の局所変数で置き換える.
- Moduleによって作成される記号は,属性はTemporaryを持つ.
- Moduleによって作成される記号をモジュールから返すことができる.
- 条件が付随した変換規則の右辺としてModule[{vars},body/;cond]を使用することができる.
- Moduleは属性HoldAllを持つ.
- Module構文は,任意の形にネストさせることができる.内側の変数は必要に応じて改名される.
- Moduleはレキシカルスコープを実装するスコープ構文である.
例題
すべて開く すべて閉じる例 (1)
f[x0_] :=
Module[{x = x0},
While[x > 0, x = Log[x]];
x
]f[2.0]アプリケーション (2)
fib[n_] :=
Module[{f},
f[1] = f[2] = 1;
f[i_] := f[i] = f[i - 1] + f[i - 2];
f[n]
]fib[5]初期化された局所変数を使ったGCDのためのユークリッドアルゴリズム:
gcd[m0_, n0_] :=
Module[{m = m0, n = n0},
While[n ≠ 0, {m, n} = {n, Mod[m, n]}];
m
]gcd[18, 21]特性と関係 (8)
モジュールが評価されるたびに新たな一時的シンボルが作られる:
{Module[{x}, x], Module[{x}, x]}モジュールシンボルは一時的なものであり,参照されなくなると取り除かれる:
Module[{x}, Print[x];Attributes[x]]Names["x$*"]Moduleを使うたびに$ModuleNumberが増分される:
{$ModuleNumber, Module[{x}, x], $ModuleNumber}局所変数に割り当てる必要がなければ,代りに定数が使われるべきである:
With[{x = 2.0}, Sqrt[x] + 1]Timing[Do[Module[{x = 5}, x;], {10 ^ 5}]]Timing[Do[With[{x = 5}, x;], {10 ^ 5}]]Blockは値のみを局所化する.新たなシンボルは作らない:
x = 7;
Block[{x = 5}, Print[x]];xUniqueはModuleと同じような方法で新たな変数を作る:
{Unique[x], Module[{x}, x]}局所変数は大域変数の影響を受けず,大域変数は局所変数の影響を受けない:
x = 17;
Module[{x = x}, x = x + 1;x]xModuleのスコープに持ち込まれたシンボルは名前の不一致による影響を受けない:
y = x ^ 2;Module[{x = 5}, x + y]考えられる問題 (3)
Moduleはスコープ構文である.内側の局所変数が外側のものを隠蔽する:
Module[{x}, Print[x];Module[{x}, Print[x]]]Module[{e = Expand[(1 + x) ^ 5]}, Function[x, e]]%[10]Module[{e = Expand[(1 + x) ^ 5]}, Function@@{x, e}]%[10]並行割当てはModule変数には適用できない:
v = {a, b};Module[{{x, y} = v}, x ^ 2 + y ^ 2]Module[{x = v[[1]], y = v[[2]]}, x ^ 2 + y ^ 2]テクニカルノート
履歴
1991 で導入 (2.0)
テキスト
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_2026_module, author="Wolfram Research", title="{Module}", year="1991", howpublished="\url{https://reference.wolfram.com/language/ref/Module.html}", note=[Accessed: 19-July-2026]}
BibLaTeX
@online{reference.wolfram_2026_module, organization={Wolfram Research}, title={Module}, year={1991}, url={https://reference.wolfram.com/language/ref/Module.html}, note=[Accessed: 19-July-2026]}