値と変数¶
リテラル値¶
YAYAは3種類の値型をサポートする:
整数 (int)¶
符号付き64ビット整数。10進数、2進数(0b プレフィックス)、16進数(0x プレフィックス)で記述できる。
例:10、0b1010、0xa はすべて10を表す。
浮動小数点数 (double)¶
符号付き64ビット浮動小数点数。小数点で区別される。整数同士の除算は切り捨て。3.0/4*100 と書くと 75.0 になる(0 にはならない)。
文字列¶
ダブルクォート("")で囲んだ値は変数・関数の展開をサポートする。シングルクォート('')は展開を抑制する。クォートのエスケープはダブルで行う:"1""2" → 1"2。
ヒアドキュメント: <<"...">> (展開あり)または <<'...'>> (展開なし)で複数行文字列を記述できる。
配列とハッシュ¶
リテラル値のほかに、値をまとめて扱う型として汎用配列(配列)と、Tc600-3以降ではハッシュ(連想配列、ハッシュと値の入れ子)がある。
Tc600-3以降では、配列やハッシュの要素に配列やハッシュを入れる(入れ子にする)こともできる。
変数¶
変数にはスカラー値、配列、ハッシュ(Tc600-3以降)を格納できる。変数名は数字始まり・予約文字/予約語・関数名と重複するものは使用不可。
代入は = を使う:str = "こんにちは"。未定義変数は算術では0、文字列連結では空文字列として扱われる。
スコープとライフタイム¶
グローバル変数¶
どこからでもアクセス可能。ERASEVAR() で削除されるまで永続する。セッションをまたいで自動的に保存・復元される。
ローカル変数¶
アンダースコア(_)プレフィックスで宣言。宣言されたスコープブロックとそれより深いブロック内でのみ有効。ブロックを抜けると削除される。異なる関数内で同名のローカル変数を使っても、互いに独立して動作する。