next up previous contents index
Next: 文字列への変換 Up: 文字列 Previous: 文字列から指定文字の位置を調べる

   
文字列の評価 (matx)

  関数eval()を用いて,MATXの任意のコ−ドからなる文字列を評価すること ができ,関数の戻り値は評価結果と一致する。すなわち,関数の戻り値の型は, 評価する文字列に依存する。式以外のコ−ドを評価したときは,常に整数0を返す。 例えば,

  Real a, b, c;
  Matrix A, B, C;

  a = 1.0; b = 2.0;
  A = [[1 2][3 4]]; B = [[5 6][7 8]];

  c = eval("a + b");
  C = eval("A + B");


において,eval("a + b")は,実数abの和の結果を返すのに 対して,eval("A + B")は,行列ABの和の結果を返す。

また,次の例に示すようにeval()を関数内で用いると,プログラムのデバッグ を効率的に行なうことができる。


  Func void afo()
  {
    String cmd;

    ...................
 
    for (;;) {
      read cmd;
      if (cmd == "q") {
        break;
      }
      eval(cmd);
    }

    ..................
  }


関数内でeval()を使うとき,引数として文字列"who""whos"を 用いると,その関数の局所変数と大域変数の両方を参照することができる。


  Func void afo()
  {
    ...................

    eval("who");
    eval("whos");

    ..................
  }




Masanobu KOGA 平成10年8月19日