Block
詳細
- Blockは,変数の値を一時的に変更することができる環境の設定を可能にする.
- ブロックを実行すると,x, y, …に割り当てられた値はクリアされる.ブロックの実行が終ると,これらの記号のもとの値が回復される.
- Blockは,記号の値(values)にだけ影響を与え,これらの名前に影響することはない.
- x, y, …の初期値が評価された後に,x, y, …がクリアされる.
- Block[{vars},body/;cond]を条件付きの変換規則の右辺として使用することができる.
- Blockは属性HoldAllを持つ.
- Blockは,変数にダイナミックスコープを利用する.
- Do,SumそしてTable等の反復構成において,Blockは自動的に反復子の値を局所的なものにするのに使用される.
予備知識
- Blockは,ブロック内で想定する値を,ブロック外で想定する値から区別することによって,記号を局所化するスコーピング構文である.Blockは,変数の動的なスコーピングを実装する.つまり,局所記号の名前は変わらない.局所記号に値がある場合には,この値が使われる.それ以外の場合には,それを囲んでいる関数の値が使われる.Blockは,値を局所化するだけで,それを置き換えることはしない.
- これに対して,Moduleは字句スコーピングを行う.つまり,呼出しごとに変数の新しい一意的なコピーが作成され,これは囲んでいる関数や続くModuleへの呼出しのどこでも使われることはない.
- Blockは通常Moduleより速いので,スコープされた変数を持つ関数が何度も呼び出される場合には,Blockの方が速く評価結果を出すことがある.Blockは,Do,Sum,Product,Table等の構文における反復子の値を局所化するのに自動的に使用される.Blockはネストしてもよい.
- 局所構文の定義を行えるもう一つのスコーピング構文にWithがある.これは,読取りのみの字句変数を実装し,スコーピング構文の中で局所変数として起らない場合にのみ,記号を置換する.Blockと同様,WithはModuleより速い.通常の代入ではスコーピングは保存されないが,Withでは未評価の式内部での代入,つまりネストされたスコープが可能である.
- Block構文の内部(あるいは外側)にある複数の式は,CompoundExpressionを使ってグループ化される.
例題
すべて開くすべて閉じる例 (1)
アプリケーション (2)
Wolfram Research (1988), Block, Wolfram言語関数, https://reference.wolfram.com/language/ref/Block.html.
テキスト
Wolfram Research (1988), Block, Wolfram言語関数, https://reference.wolfram.com/language/ref/Block.html.
CMS
Wolfram Language. 1988. "Block." Wolfram Language & System Documentation Center. Wolfram Research. https://reference.wolfram.com/language/ref/Block.html.
APA
Wolfram Language. (1988). Block. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/Block.html