global / save(永続化)
global はゴースト全体で共有される変数です。
global save.… のように save の下に置いた値だけが、ゴーストを閉じても残ります。
データは save.json に自動的に保存・読み込みされます(保存されるのはゴーストの終了時と再読み込み時です)。
save 以外に置いた値(global foo = 5 や global work.x = 1 など)は、ゴーストを起動しているあいだだけ他のトークから見えますが、save.json には保存されず、終了すると消えます。
save.json に残したい値には、必ず save. を付けてください。書き忘れてもエラーは出ません。
基本的な書き方
OnBoot => {
global save.訪問回数 += 1
湊: ${save.訪問回数}回目の起動です。
}
save. の後にキー名を書きます。
初回は null から始まるので、+= で数値を足すと自動的に数値として扱われます。
初期値を設定する
?= を使うと、値が null のときだけ代入します。
初期化に便利です。
OnBoot => {
global save.訪問回数 ?= 0
global save.訪問回数 += 1
湊: ${save.訪問回数}回目の起動です。
}
代入演算子一覧
| 演算子 | 意味 |
|---|---|
= | 代入 |
+= | 加算して代入 |
-= | 減算して代入 |
*= | 乗算して代入 |
/= | 除算して代入 |
%= | 剰余を代入 |
?= | nullのときだけ代入 |
ネストしたデータ
マップをネストして構造化できます。
OnBoot => {
global save.stats.win += 1
湊: ${save.stats.win}勝しました。
}
配列の保存
OnBoot => {
global save.履歴 ?= []
global save.履歴 = push(save.履歴, "起動")
湊: 履歴に追加しました。
}
letとglobalの違い
| let | global save.… | global(save 以外) | |
|---|---|---|---|
| スコープ | トーク内(ブロック内)のみ | ゴースト全体 | ゴースト全体 |
| 永続化 | されない | save.json に保存 | されない(終了で消える) |
| 用途 | 一時的な計算 | 訪問回数・フラグ等 | 起動中だけ共有したい値 |