Top/マニュアル/基本/関数
  トップページへ   [ 一覧 | 検索 | 最終更新 ]   [ 差分 | 履歴 ]


関数

関数名は全角文字も使えます。

また、変数の定義はローカル、グローバル問わず関数内でしかできないことに注意してください。

基本

Test{
 "Hello World!"
}

このTest関数は文字列"Hello World!"を出力します。 YAYAの特徴として、代入式でないただの変数や文字列(この例における"Hello World!")が存在すると、それが返り値として扱われます。

つまり

Test{
 _A = 10
 _B = 11+32 
 "Hello World!"
}

としても、返り値は"Hello World!"となります。 また、

Test{
 A = 10
 "Hello World!"
 "Hallo Welt!"
 10
 11+32
}

のように返り値の候補が複数存在すると、それらのうちいずれかがランダムで選ばれます(この例では"Hello World!", "Hallo Welt!", 10, 43)。

また、中括弧は

Test
{
 "Hello World!"
 "Hallo Welt!"
}

のように書いても構いません。

引数

関数には引数を与えることができます。このとき受け取った引数はローカル変数の配列_argvに書格納され、_argcに引数の数(_argvのサイズ)が格納されます。

例えば

てすと{
 "入力は「"+_argv[0]+"」だよ"
}

という関数を定義し、

てすと("うかがか")

のように実行すると、"入力は「うかがか」だよ"が出力されます。

自身の関数名

ローカル変数 _FUNC_NAME_ には現在実行中の関数名が入ります。
各種の動的定義命令(APPEND_RUNTIME_DICなど)の拡充に伴い、利便性のために追加されました。

変数の定義

関数内では自由に変数を宣言することができます。このとき変数名が"_"からはじまるものはローカル、そうでないものはグローバル変数として扱われます。

ローカル変数

その変数が定義された中括弧内でしか使えない変数です。

グローバル変数

関数が実行されて一度定義されてしまうと、どこでも使える変数になります。
なお、グローバル変数はゴーストを終了しても保持されます。消去したい場合はERASEVAR関数を使う必要があります。

テスト2{
 _aa = 200//これはローカル
 bb = 200//これはグローバル
}

その関数内でしか使わない変数などは、なるべくローカル変数を使うようにしたほうがバグが出にくくなります。たとえばループ処理のラベルなどでは

テスト2{
 for _i = 0; _i <10; _i++{
  _i+"\n"
 }
}

のようにローカル変数(_i)を使ってください。