関数の定義

またまた数学チックな言葉ですが、関数とは、処理のひとまとまりのことです。
同じ処理は一つにまとめて簡単にしよう、という発想です。

関数の定義の仕方

関数を定義するには、「function」を使います。
関数の定義
1
2
3
4
5
function Greeting(){
  Mes("こんにちは!");
}

Greeting;
こんな感じです。「function」のあとに関数名を書きます。
呼び出すときも普通の関数と同様です。
()内は引数です。引数を取る関数を作る場合は、()の中に引数名を書きます。
引数あり関数
1
2
3
4
5
function Greeting(Name){
  Mes("こんにちは!\n私は{Name}です。");
}

Greeting("Spinel");
引数を複数とる場合は、「,」で区切って指定します。
「function Greeting(Name,Age)」といった感じです。
定義した引数は、ローカル変数、つまりその関数内だけで有効な変数として使用できます。
上の例のように「Name」という変数に引数が代入されます。

注意したいのが、標準関数と同名の関数を定義した場合に無視されるという点です。
つまり、Mesという関数を定義した場合、標準命令のMesが実行される、ということです。
それ以外の定義された関数の場合には、重複したときにエラーとなります。


同名関数の定義

Spinelでは、同名関数を定義することが出来ます。
同名の関数の場合、引数の違いで処理を分けます。
このことを、関数をオーバーロードするといいます。

関数をオーバーロードするには、functionのまえに「overload」をつけます。
関数のオーバーロード
1
2
3
overload function Greeting(Name){
  Mes("こんにちは!\n私は{Name}です。");
}
1つだけなら意味がありません。
以下のように、異なる引数で同名の関数を定義します。
オーバーロード
1
2
3
4
5
6
7
overload function Greeting(Name){
  Mes("こんにちは!\n私は{Name}です。");
}

overload function Greeting(Name,Age){
  Mes("こんにちは!\n私は{Name}、{Age}歳です。");
}
1つめの関数は引数を1つ、2つめの関数は引数を2つ取ります。
呼び出しは普通です。コンパイラが適切な引数の関数へと変換してくれます。
呼び出し
 1
2
3
4
5
6
7
8
9
10
overload function Greeting(Name){
  Mes("こんにちは!\n私は{Name}です。");
}

overload function Greeting(Name,Age){
  Mes("こんにちは!\n私は{Name}、{Age}歳です。");
}

Greeting("Spinel"); //1つめのGreeting
Greeting("がびょう",17); //2つめのGreeting
どうでしょう?引数の数を変えただけでうまく処理が分かれたと思います。
賢いですね、パソコンって。
index / 次へ
プログラム言語「Spinel
Copyright © 2005 - Giemsa All Rights Reserved.
NOTES Software.