// 関数定義
int add2(int a, int b) {
return a + b;
}
// 可変長引数を持つ関数定義
int sum(int ... rest) {
int x = 0;
foreach (rest, int n) {
x+= n;
}
return x;
}
// 再帰的呼び出し
int factorial(int n) {
if (n == 0) {
return 1;
} else {
return n * factorial(n - 1);
}
}
// 暗黙のラムダ
int times(int n, function block) {
for (int i = 0; i < n; i++)
block();
return n;
}
int main() {
// 関数の呼び出し
int result = add2(2, 3);
//=> 実行結果: result = 5
array(int) ary = ({32, 16});
result = add2(@ary);
//=> 実行結果: result = 48
result = sum(1, 2, 3);
//=> 実行結果: result = 6
ary = ({ 1, 2, 4, 8 });
result = sum(@ary);
//=> 実行結果: result = 15
result = factorial(5);
//=> 実行結果: result = 120
int x = 0;
times(3) {
write("Hello world! <%d>\n", x++);
};
//=> 実行結果:
//=> Hello world! <0>
//=> Hello world! <1>
//=> Hello world! <2>
return 0;
}
Ly8g6Zai5pWw5a6a576pCmludCBhZGQyKGludCBhLCBpbnQgYikgewogICAgcmV0dXJuIGEgKyBiOwp9CgovLyDlj6/lpInplbflvJXmlbDjgpLmjIHjgaTplqLmlbDlrprnvqkKaW50IHN1bShpbnQgLi4uIHJlc3QpIHsKICAgIGludCB4ID0gMDsKICAgIGZvcmVhY2ggKHJlc3QsIGludCBuKSB7CiAgICAgICAgeCs9IG47CiAgICB9CiAgICByZXR1cm4geDsKfQoKLy8g5YaN5biw55qE5ZG844Gz5Ye644GXCmludCBmYWN0b3JpYWwoaW50IG4pIHsKICAgIGlmIChuID09IDApIHsKICAgICAgICByZXR1cm4gMTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIG4gKiBmYWN0b3JpYWwobiAtIDEpOwogICAgfQp9CgovLyDmmpfpu5njga7jg6njg6Djg4AKaW50IHRpbWVzKGludCBuLCBmdW5jdGlvbiBibG9jaykgewogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCiAgICAgICAgYmxvY2soKTsKICAgIHJldHVybiBuOwp9CgppbnQgbWFpbigpIHsKICAgIC8vIOmWouaVsOOBruWRvOOBs+WHuuOBlwogICAgaW50IHJlc3VsdCA9IGFkZDIoMiwgMyk7CiAgICAvLz0+IOWun+ihjOe1kOaenDogcmVzdWx0ID0gNQoKICAgIGFycmF5KGludCkgYXJ5ID0gKHszMiwgMTZ9KTsKICAgIHJlc3VsdCA9IGFkZDIoQGFyeSk7CiAgICAvLz0+IOWun+ihjOe1kOaenDogcmVzdWx0ID0gNDgKCiAgICByZXN1bHQgPSBzdW0oMSwgMiwgMyk7CiAgICAvLz0+IOWun+ihjOe1kOaenDogcmVzdWx0ID0gNgoKICAgIGFyeSA9ICh7IDEsIDIsIDQsIDggfSk7CiAgICByZXN1bHQgPSBzdW0oQGFyeSk7CiAgICAvLz0+IOWun+ihjOe1kOaenDogcmVzdWx0ID0gMTUKCiAgICByZXN1bHQgPSBmYWN0b3JpYWwoNSk7CiAgICAvLz0+IOWun+ihjOe1kOaenDogcmVzdWx0ID0gMTIwCgogICAgaW50IHggPSAwOwogICAgdGltZXMoMykgewogICAgICAgIHdyaXRlKCJIZWxsbyB3b3JsZCEgPCVkPlxuIiwgeCsrKTsKICAgIH07CiAgICAvLz0+IOWun+ihjOe1kOaenDoKICAgIC8vPT4gSGVsbG8gd29ybGQhIDwwPgogICAgLy89PiBIZWxsbyB3b3JsZCEgPDE+CiAgICAvLz0+IEhlbGxvIHdvcmxkISA8Mj4KCiAgICByZXR1cm4gMDsKfQ==