コンテクスト

コンテクスト とは、Pnuts の実行環境の内部的なデータを保持するオブジェクトでpnuts.lang.Contextクラスで表されます。コンテクストは次のような情報を含みます。

pnuts.lang.Contextクラスに関する概略は Pnuts API の概略を見てください。

getContext()

実行中のコンテクストを求めます。 コンテクストは、対話的セッションの開始時か、load() や loadFile() の呼び出し時に作成されます。それ以外の計算では、getContext()で得られるコンテクストを参照します。

eval ( String expression , Context context )
load ( String scriptFile , Context context )
loadFile ( String scriptFile , Context context )

これらの関数にcontextが指定された場合、そのコンテクストのコピーが作られ、そのクローン(複製)を使ってスクリプトが実行されます。

contextが指定されない場合、カレント・コンテクストのクローンが作られ、そのクローンを使ってスクリプトが実行されます。この場合は、import() の状態とカレントパッケージは初期状態にリセットされます。

メッセージの出力先

コンテクスト毎に次の3種類の出力先を別々に指定できます。

context . setOutputStream (OutputStream anOutputStream)
context . getOutputStream()
context . setWriter (Writer aWriter )
context . getWriter()
context . setErrorWriter (Writer writer)
context . getErrorWriter()
context . setTerminalWriter (Writer writer)
context . getTerminalWriter()

コンテクスト・ローカル変数

context . symbol

コンテクスト・ローカル変数は、コンテクストにバインドされた一種の環境変数です。関数呼び出しをまたいで状態を保持したい場合に用います。

例:
function foo(){
  getContext().foo = true
}

function bar(){
  if (getContext().foo != null){
    println("foo has been called")
  }
}

その他の属性については、Pnuts API の概略を参照。