#author("2021-10-08T10:51:32+09:00","","")
#navi(マニュアル/基本)
*関数 [#n5a1e946]
#contents
関数名は全角文字も使えます。
また、変数の定義はローカル、グローバル問わず関数内でしかできないことに注意してください。
*基本 [#taf16c8e]
#code(aya,nooutline,nolink,nonumber){{
Test{
"Hello World!"
}
}}
このTest関数は文字列"Hello World!"を出力します。
YAYAの特徴として、代入式でないただの変数や文字列(この例における"Hello World!")が存在すると、それが返り値として扱われます。
つまり
#code(aya,nooutline,nolink,nonumber){{
Test{
_A = 10
_B = 11+32
"Hello World!"
}
}}
としても、返り値は"Hello World!"となります。
また、
#code(aya,nooutline,nolink,nonumber){{
Test{
A = 10
"Hello World!"
"Hallo Welt!"
10
11+32
}
}}
のように返り値の候補が複数存在すると、それらのうちいずれかがランダムで選ばれます(この例では"Hello World!", "Hallo Welt!", 10, 43)。
また、中括弧は
#code(aya,nooutline,nolink,nonumber){{
Test
{
"Hello World!"
"Hallo Welt!"
}
}}
のように書いても構いません。
*引数 [#n5a1e946]
関数には引数を与えることができます。このとき受け取った引数はローカル変数の配列_argvに書格納され、_argcに引数の数(_argvのサイズ)が格納されます。
例えば
#code(aya,nooutline,nolink,nonumber){{
てすと{
"入力は「"+_argv[0]+"」だよ"
}
}}
という関数を定義し、
#code(aya,nooutline,nolink,nonumber){{
てすと("うかがか")
}}
のように実行すると、"入力は「うかがか」だよ"が出力されます。
*自身の関数名 [#o45f5801]
ローカル変数 _FUNC_NAME_ には現在実行中の関数名が入ります。~
各種の動的定義命令([[APPEND_RUNTIME_DIC>マニュアル/関数/APPEND_RUNTIME_DIC]]など)の拡充に伴い、利便性のために追加されました。
*変数の定義 [#n5a1e946]
関数内では自由に変数を宣言することができます。このとき変数名が"_"からはじまるものはローカル、そうでないものはグローバル変数として扱われます。
***ローカル変数 [#b6493b63]
その変数が定義された中括弧内でしか使えない変数です。
***グローバル変数 [#d08d255a]
関数が実行されて一度定義されてしまうと、どこでも使える変数になります。~
なお、グローバル変数はゴーストを終了しても保持されます。消去したい場合は[[ERASEVAR>マニュアル/関数/ERASEVAR]]関数を使う必要があります。
#code(aya,nooutline,nolink,nonumber){{
テスト2{
_aa = 200//これはローカル
bb = 200//これはグローバル
}
}}
その関数内でしか使わない変数などは、なるべくローカル変数を使うようにしたほうがバグが出にくくなります。たとえばループ処理のラベルなどでは
#code(aya,nooutline,nolink,nonumber){{
テスト2{
for _i = 0; _i <10; _i++{
_i+"\n"
}
}
}}
のようにローカル変数(_i)を使ってください。
#navi(マニュアル/基本)