可変長引数の実装 - SPVM開発日記

今日はは、可変長引数の実装にチャレンジしています。

可変長引数が実装できるとsprintfをPerlと同じ構文で書けるようになる。

my $string = sprint("a %d %f b", 1, 0.5);

定義側はこうする予定。

sub sprintf : string ($format : string, $objects : object[] ...) {
  ...
}

「...」というので、可変長引数かどうかを定義できるようにする。

引数を渡すときは、第一引数に、配列が指定された場合は、配列として渡されて、配列ではないオブジェクトが指定されると、それに続くオブジェクトを考慮して、新しい配列を作成して渡すようにする。

これは、javaの実装と同じ。