注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
変数を再計算すると、その定義と現在の入力から値が再び計算されます。たとえば、合計費用の変数は数量の変数を入力として使用する場合があります。再計算の動作は、数量を変更したときに合計が自動的に更新されるか、ユーザーが更新を要求するまで待機するかを制御します。
Workshop エディターで変数パネルを開き、変数を選択して、変数値の再計算で選択肢を選びます。この設定は、以下に示す対応している変数定義で利用できます。
| 選択肢 | 動作 | 使用例 |
|---|---|---|
| 自動 | 必要になったときに計算し、入力が変更されたときに再計算します。これがデフォルトです。入力値が変わっていないように見える場合でも、データの更新によって再計算されることがあります。 | 合計や概要をユーザーの選択と同期した状態に保持します。 |
| イベントによるトリガー時のみ | 明示的な {variable name} を再計算イベントによって計算が要求されるまで待機します。入力の変更や上流の変数のデータ更新では、値は自動的に再計算されません。 | ユーザーが複数の入力を終えてボタンを選択した後に計算を実行します。 |
| モジュールの読み込み時とイベントによるトリガー時 | モジュールの読み込み時に初期値を計算します。ただし、遅延読み込みの対象となります。その後は、入力の変更や上流の変数のデータ更新のたびに再計算するのではなく、明示的な {variable name} を再計算イベントがトリガーされたときに再計算します。 | 計算されたデフォルト値から開始し、その後はユーザーが更新するタイミングを決められるようにします。 |
どちらのイベントベースの選択肢でも、入力を変更したり、上流の変数のデータを更新したりしても、計算された値は自動的には最新になりません。値にこれらの変更を反映する必要がある場合は、再計算イベントを設定します。これらの設定は、変数の定義に基づく計算を制御します。ウィジェットや変数の値を設定イベントは、引き続き値を直接変更できます。
ボタングループなどのウィジェットに、{variable name} を再計算イベントを追加します。このイベントは、選択されている再計算の選択肢にかかわらず、変数の定義と現在の入力を使用して新しい値を要求します。
イベントでのみ計算する場合は、ユーザーが結果を必要とする前にイベントをトリガーできる方法を用意してください。変数を再計算しても、その入力の設定がイベントを必要とする場合、入力は強制的には再計算されません。先にそれらの入力が準備できていることを確認してください。
利用できるかどうかは使用する定義タイプによって異なり、次の定義タイプに対応しています。
Workshop は、不要な計算を避けるために変数の遅延読み込みを使用します。自動計算は、表示されているウィジェットやレイアウトが変数を必要とするまで待機する場合があります。これには、ほかの必要な変数がその変数に依存している場合も含まれます。そのため、モジュールの読み込み時とイベントによるトリガー時では、モジュールを開いた直後ではなく、初めて必要になったときに初期値が計算される場合があります。
表示の対象は、画面上に表示される値に限りません。条件付き表示設定など、レイアウトを制御する変数は、制御対象のセクションが非表示であっても、表示されているものとして扱われる場合があります。そのため、セクションを非表示にしても、関連するすべての計算が停止するとは限りません。
アクションの実行やモジュールデータの更新によって、自動計算する変数が再計算されることがあります。これには、関数、集計、オブジェクトプロパティ、変換が含まれます。これらの変数は、自動更新の後にも、結果の値が変わらなくても再計算される場合があります。
オブジェクトセット変数の値と、ウィジェットが表示するオブジェクトデータは別のものです。オブジェクトセットを返す関数の再計算を制御しても、テーブルに表示されるオブジェクトが固定されるわけではありません。ウィジェットは、アクションやデータ更新の後に引き続きデータを再読み込みできます。
予期しない再計算のトラブルシューティングを行う際は、変数のリネージュグラフを使用して依存関係を調べ、変数を読み取ったり変更したりするウィジェットを特定します。