All Packages  Class Hierarchy  This Package  Previous  Next  Index

Class epp.Dynamic

java.lang.Object
   |
   +----epp.Dynamic

public abstract class Dynamic
extends Object
クラス Dynamic は、lisp の動的変数と同じメカニズムを提供します。.

動的変数は、大域変数と似ていますが、動的なスコープを持ちます。

メソッド bind は、古い値をスタックに退避してから値を変更します。 メソッド unbind は、スタックから値を取り出して、最後に bind された 変数の値をもとに戻します。

動的変数に代入できる値は Object 型のサブクラスだけです。 動的変数は、初期状態では unbound という状態にあります。 この状態で値を set/get しようとすると、 UnboundDynamicVariableAccessException が throw されます。

int 型をクラス Integer に wrap して動的変数に入れたい場合が よくあるので、そのためのメソッド bindInt, getInt, setInt が用意されています。 これらのメソッドを使うと、 引数や返値は、自動的にクラス Integer に wrap/unwrap されます。 (将来のバージョンでは、 int 型と Object 型の値は、 別の場所に保存されるようになります。)

Example
-------
void foo(){
  ...;
  Dynamic.bind(:sym1, val1);
  Dynamic.bind(:sym2, val2);
  try {				// Do try immediatly after bind.
    ...;
    bar();
    ...;
    return;
  } finally {			// Do unbind same times as you did bind.
    Dynamic.unbind();
    Dynamic.unbind();
  }
}
void bar(){
  Object val = Dynamic.get(:sym1);
  Dynamic.set(:sym2, val);
}

See Also:
UnboundDynamicVariableAccessException

Constructor Index

 o Dynamic()

Method Index

 o bind(Symbol, Object)
動的変数 var を値 val に bind します。.
 o bindInt(Symbol, int)
動的変数 var を値 new Integer(val) に bind します。.
 o get(Symbol)
動的変数 var の現在の値を取り出します。.
 o getInt(Symbol)
動的変数 var の値から int 型の値を取り出します。.
 o set(Symbol, Object)
動的変数 var の値を val に変更します。.
 o setInt(Symbol, int)
動的変数 var の値を new Integer(val) に変更します。.
 o unbind()
メソッド bind によって退避された動的変数の値を元に戻します。.

Constructors

 o Dynamic
 public Dynamic()

Methods

 o bind
 public static void bind(Symbol var,
                         Object val)
動的変数 var を値 val に bind します。. 動的変数 var の古い値は、別の場所に退避されます。

 o bindInt
 public static void bindInt(Symbol var,
                            int val)
動的変数 var を値 new Integer(val) に bind します。. 動的変数 var の古い値は、別の場所に退避されます。

 o unbind
 public static void unbind()
メソッド bind によって退避された動的変数の値を元に戻します。.

 o get
 public static Object get(Symbol var)
動的変数 var の現在の値を取り出します。.

 o getInt
 public static int getInt(Symbol var)
動的変数 var の値から int 型の値を取り出します。. 正確には、このメソッドの動作は、次のものと同じです。
   ((Integer)Dynamic.get(var)).intValue()

 o set
 public static void set(Symbol var,
                        Object val)
動的変数 var の値を val に変更します。. メソッド bind とは違い、古い値は退避されません。

 o setInt
 public static void setInt(Symbol var,
                           int val)
動的変数 var の値を new Integer(val) に変更します。. メソッド bindInt とは違い、古い値は退避されません。


All Packages  Class Hierarchy  This Package  Previous  Next  Index