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

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

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

局所変数の利用
特別なことをしないかぎり、変数は大域的なものとなる ので(要するに、どこからでも見える)、名前の衝突5に気を付ける必要がある。例えば

        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: 7.3.0.1 例1. Up: 7. Mathematica のプログラミング機能 Previous: 7.2 関数定義
Masashi Katsurada
平成13年8月1日