実効値(GameElementDefinition.md 8.3節)の読み取り1回ぶんの区切り。
実効値を出すには寄与のゲート(8.2節)を見る、ゲートを見るには段(6.4節)を見る、段を見るには また別の実効値を出す、という再帰になっていて、1本の読み取りの中に同じプロパティが何度も 現れる——1つのプロパティに並ぶ寄与が、揃って同じプロパティの段で縛られているのが普通だから。 この再帰は値を一切書き込まないので、同じ読み取りの中でなら、前に出した答えをそのまま使える。
ここが持つのは「今が何回目の読み取りか」だけで、答えそのものは各PropertyValueが自分で持つ。 読み取りを1つ終えるたびに番号が進むので、前の読み取りで出した答えは二度と一致しない——tickの 積分(8.4節)が実体値を動かしても、跨いだ答えが使われることはない。
非公開
入れ子の深さ。0へ戻ったところが1回の読み取りの終わり。
今の読み取りの番号。読み取りの外では、どの答えとも一致しない番号——直前の読み取りを 終えた時点で進めてあるため。
bodyを1回の読み取りとして走らせる。入れ子で呼んでよく、そのあいだは同じ番号のまま。
bodyは世界を書き換えないこと。 番号が変わらない間、各PropertyValueは前に出した答えを そのまま返す。書き換えても無効化は走らないので、古い答えが黙って返り続ける。
実効値(GameElementDefinition.md 8.3節)の読み取り1回ぶんの区切り。
実効値を出すには寄与のゲート(8.2節)を見る、ゲートを見るには段(6.4節)を見る、段を見るには また別の実効値を出す、という再帰になっていて、1本の読み取りの中に同じプロパティが何度も 現れる——1つのプロパティに並ぶ寄与が、揃って同じプロパティの段で縛られているのが普通だから。 この再帰は値を一切書き込まないので、同じ読み取りの中でなら、前に出した答えをそのまま使える。
ここが持つのは「今が何回目の読み取りか」だけで、答えそのものは各PropertyValueが自分で持つ。 読み取りを1つ終えるたびに番号が進むので、前の読み取りで出した答えは二度と一致しない——tickの 積分(8.4節)が実体値を動かしても、跨いだ答えが使われることはない。