next up previous
Next: 4.3.0.1 例1. Up: 4 Mathematica のプログラミング機能 Previous: 4.2 関数定義

4.3 関数定義のための細かい注意

以下の記述はプログラミングの中級者向けであって、最初は読み飛ばして構 わない。実用的なプログラムを書く際に必要な、他への悪影響が出ない&他か らの影響を受けないようにするための工夫の話。

局所変数の利用
特別なことをしないかぎり、変数は大域的なものとなる ので(要するに、どこからでも見える)、名前の衝突3に気を付ける必要がある。例えば
        PowerSum[x_, n_] := Sum[x^i, {i,1,n}]
とすると、 PowerSum[x,5] のようなのは大丈夫だが、PowerSum[i,5] はうまく動かない。 Module[{local-var1,local-var2,..}, procedure] を 利用して

		 PowerSum[x_,n_] :=

Module[{i}, ← 局所変数 i を使うことを宣言
Sum[x^i, {i,1,n}]
]

とする方が良い (Module[] に似たものに Block[] という関数が ある)。
context の利用
実は、上の例はまだ完璧とは言えない。``i'' という名前そのものはグ ローバルに見えてしまう(あまり実害はないけれど)。context (文脈と訳され ることが多い)を導入して、名前の扱いを制御する。

		Begin["Private`"]

PowerSum[x_,n_] :=
Module[{i},
Sum[x^i, {i,1,n}]
]
End[]

この例では ``Private`'' という context を導入している。 とはいえ、他人に使ってもらうプログラムを書く場合でもなければ、ここまで 気にする必要はないかもしれない。




next up previous
Next: 4.3.0.1 例1. Up: 4 Mathematica のプログラミング機能 Previous: 4.2 関数定義
Masashi Katsurada
平成20年10月18日