next up previous contents index
Next: 関数呼び出し (matx) Up: 可変長引数関数 Previous: リストを利用した可変長引数関数

一般的な可変長引数関数



  Func void foo()
  {
    Matrix a, b, c;
    Matrix afo(...);

    read a, b, c;

    print afo();
    print afo(a);
    print afo(a, b);
    print afo(a, b, c);
  }

  Func Matrix afo(a, b, c, ...)
    Matrix a, b, c;
  {
    if (nargs == 0) {
      return Z(0);
    } else if (nargs == 1) {
      return a;
    } else if (nargs == 2) {
      return a + b;
    } else if (nargs == 3) {
      return a + b + c;
    }
  }


可変長引数関数の定義は,引数リストの最後に``...''を追加することを除いて 普通の関数の定義と変わらない。また,可変長引数関数を呼び出す側では,普通の 関数を呼び出す時と同じように,関数を定義しなければならない。宣言の方法は, 関数の型に続いて``関数名(...)''を書く。可変長引数関数が呼び出されると, 呼出時に渡された引数の個数が,特別な変数 nargs にセットされる。


Masanobu KOGA 平成10年8月19日