7. サブルーチン
7.1. 定義
サブルーチン (subs とも 関数 とも呼ばれる) とは、いくつかの操作をまとめるための方法です。
サブルーチンの定義は sub
キーワードで始まります。定義したあとは、それを呼び出すことができます。
下の例を見てください:
sub alien-greeting {
say "Hello earthlings";
}
alien-greeting;
これは、入力がまったく必要ないサブルーチンの例です。
7.2. シグネチャ
多くのサブルーチンはいくつかの入力を必要とするでしょう。それらの入力は 引数 によって与えられます。 サブルーチンが取る引数の数や型を、そのサブルーチンの シグネチャ と呼びます。
下のサブルーチンは一つの文字列を引数として取ります。
sub say-hello (Str $name) {
say "Hello " ~ $name ~ "!!!!"
}
say-hello "Paul";
say-hello "Paula";
7.3. 多重ディスパッチ
同じ名前でシグネチャが異なる複数のサブルーチンを定義できます。
サブルーチンが呼ばれると、与えられた引数の数と型によって、ランタイムがどのサブルーチンを呼び出すか決定します。
このようなサブルーチンは普通のサブルーチンと同じように定義することができます。ただし、 sub
キーワードの代わりに multi
を使います。
multi greet($name) {
say "Good morning $name";
}
multi greet($name, $title) {
say "Good morning $title $name";
}
greet "Johnnie";
greet "Laura","Mrs.";
7.4. デフォルト引数、オプショナル引数
サブルーチンを引数を取るものとして定義した場合、必要な引数なしで呼び出すと失敗します。
そうならないように、Perl6では以下のような引数を使ってサブルーチンを定義できることもできます:
-
オプショナル引数
-
デフォルト引数
オプショナル引数は、引数の前に ?
を付けて定義します。
sub say-hello($name?) {
with $name { say "Hello " ~ $name }
else { say "Hello Human" }
}
say-hello;
say-hello("Laura");
ユーザーが引数を渡さない場合に、デフォルトの値をセットするように指定することもできます。
サブルーチン定義の中で値を代入することによってそうできます。
sub say-hello($name="Matt") {
say "Hello " ~ $name;
}
say-hello;
say-hello("Laura");
サブルーチンや関数についてさらに詳しくは、 http://doc.perl6.org/language/functions(英語) を参照してください。 |