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

#navi(マニュアル/基本)

*関数 [#n5a1e946]

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

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

#code(aya,nooutline,nolink,nonumber){{
Test{
 "Hello World!"
}
}}

このTest関数は文字列"Hello World!"を出力します。
YAYAの特徴として、式でないただの変数や文字列(この例における"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!")。
のように返り値の候補が複数存在すると、それらのうちいずれかがランダムで選ばれます(この例では"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){{
てすと("うかがか")
}}
のように実行すると、"入力は「うかがか」だよ"が出力されます。

*変数の定義 [#n5a1e946]
関数内では自由に変数を宣言することができます。このとき変数名が"_"からはじまるものはローカル、そうでないものはグローバル変数として扱われます。
***ローカル変数 [#b6493b63]
その変数が定義された中括弧内でしか使えない変数です。
***グローバル変数 [#d08d255a]
関数が実行されて一度定義されてしまうと、どこでも使える変数になります。~
なお、グローバル変数はゴーストを終了しても保持されます。消去したい場合は[[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(マニュアル/基本)