文字列展開
セリフや文字列の中で変数・式・関数の結果を展開できます。
基本
${} の中に変数名や式を書きます。
OnBoot => {
global save.訪問回数 += 1
湊: ${save.訪問回数}回目の起動です。
}
式の展開
計算式をそのまま書けます。
OnBoot => {
let a = 10
let b = 3
湊: ${a + b}です。
}
関数の展開
ビルトイン関数や自分で定義した関数も展開できます。
OnBoot => {
湊: 「こんにちは」は${len("こんにちは")}文字です。
}
null合体演算子
?? を使うと値が null のときの代替値を指定できます。
OnBoot => {
湊: ${save.名前 ?? "名無し"}さん、こんにちは。
}
ネストしたアクセス
マップや配列のネストもそのまま展開できます。
OnBoot => {
let data = {"name": "湊", "age": 17}
湊: 名前は${data["name"]}、年齢は${data["age"]}です。
}
「${}」なしの変数参照に注意
セリフ本文の先頭、または**${} の直後**では、${} を付けなくても
save.訪問回数 のような「名前.名前」の形が変数参照として読み取られます。
ここでいう「名前」は、英数字・_・日本語の文字(「、」「。」などの句読点や記号を含む)が
途切れず続いたものです。
このため、セリフの先頭から半角の .(小数点やバージョン番号など)まで、
スペースや半角記号を挟まずに文字が続いていると、その全体が変数参照として扱われます。
そんな変数は存在しないので値は空になり、その部分の文が消えます。
OnBoot => {
湊: 体重は57.8kgです。
// 「体重は57」と「8kgです」が「.」でつながった変数参照とみなされ、
// 「体重は57.8kgです」が消えて「。」だけが残る
}
. の前に半角スペースや半角記号があれば変数参照にはなりません。
また、本文の途中(先頭でも ${} の直後でもない位置)に書いた 57.8 は、そのまま表示されます。
回避するには、${} の中に文字列として書きます。
OnBoot => {
湊: ${"体重は57.8kgです。"}
湊: 体重は${57.8}kgです。
}
${} の直後も同じ規則が適用されます(${name}abc.def の「abc.def」が変数参照になります)。
小数点などを含む文章を書くときは、迷ったら ${"..."} を使ってください。
シングルクォート文字列との違い
シングルクォート '...' の中では展開されません。
展開が必要な場合はダブルクォート "..." を使います。
let a = '${save.訪問回数}' // 展開されない、文字列そのまま
let b = "${save.訪問回数}" // 展開される