方法を説明します (乱用) Vizzy による動的変数と偽の変数の作成 “構造体” Vizzy 内の変数.
免責事項
このガイドは文書化されていない Vizzy の機能を使用しているため、将来の Juno リリースでは警告なしに機能しなくなる可能性があります。. これはバージョンで動作することが確認されています 1.1.109.0 (現在の PC バージョン 9/9/23).
序章
Vizzy は 3 つのデータ型をサポートします:
- 浮動小数点数,
- ベクトル, これは 3 つの浮動小数点数です,
- 文字列
加えて, Vizzy はリスト データ型をサポートします, リストの各エントリは、上記の 3 つのタイプのいずれかになります。 (リスト内のすべての項目が同じタイプである必要はありません).
ほとんどの目的にはこれで十分です, しかし… 一部のアプリケーションについては, 値のリストを保存すると便利です それなし リストデータ型を使用する.
リスト データ型を避ける理由?
- 主な理由は、それが非常に, 非常に遅い. 私はそれを知っています 1.1.109 リストのパフォーマンスが向上したと主張 — でも, このバージョンがリリースされるまでに、私はこの実装を発見し、完全にコミットしていました。, それで…
- さらに, リストを操作するための Vizzy ブロックはぎこちなく大きい. それらは理解しやすいかもしれません, 特にプログラミングの経験がないユーザーにとっては, しかし、Vizzy で複雑なアプリケーションを作成することを計画している場合、サイズが大きいことが問題になります。.
- FUNK 式を介してリストにアクセスすることはできません. より複雑な数式の場合, Vizzy ブロックで計算を構築するよりも、FUNK 式に数学を配置する方が有利です。. 方程式にリストが使用されている場合, でも, この選択肢は遠いだろう, はるかに魅力的ではない.
- 複雑なアプリケーションで, 明示的に宣言された変数リスト (緑のブロック) 異様に大きくなるだろう. あるいは途方もなく大きい. このリストから項目を削除できるものはすべて、複雑なアプリケーションでは非常に望ましいものです。.
- 別の複雑な構造を含む複雑なデータ構造を作成することが可能. あ “リストのリスト”, いわば. これは、リストでは実行できず、この手法では実行できる唯一のことです.
方法
うまくいけば, あなたはよく知っています “変数を設定する [] に []” ビジーブロック. ロジックは単純です — 変数を定義します (を介して “変数の作成” ボタン) 緑色のブロックを作成します, それを最初の空白にドラッグします。 “変数を設定する [] に []” ブロック, 次に、変数に設定する値を Vizzy に伝えるために、右側に必要なものを入力します。.
しかし…
もしあなたが しませんでした 緑色のブロックを定義して最初の空白に配置します — もしそうしていたらどうしますか これ 代わりは:
答えは “「1」の値’ 変数「Active_Craft_ID」に割り当てられます。” — 別の言い方をする, それは 全く同じこと 最初の例として.
定義していない場合はどうなりますか (を介して “変数の作成” ボタン) 変数「Active_Craft_ID」”? 良い, 値は引き続き「Active_Craft_ID」という名前の変数に割り当てられます’ しかし、明らかに緑色のブロックを介して値を取得することはできません. これについては後ほど詳しく説明します.
これはどうですか:
これも期待どおりに機能します — 最後に, あなたは持っています 10 変数, 名前付き “テスト1” – “テスト10”, すべてに次の値が割り当てられます 1.
次の質問は “この方法で作成された変数にアクセスするにはどうすればよいですか?” これでは機能しません, 明らかに:
これにより文字列が割り当てられます “テスト1” 変数に “アクティブクラフトID” 変数の値を代入したいとき “テスト1” に “アクティブなクラフト ID。”
でも, FUNKが問題を解決します — デフォルトで, FUNK文字列で変数名を指定した場合, 変数名として解釈されます. したがって, これ する 仕事:
これには重要な注意点が 2 つあります, でも:
- FUNK 表現には、 いいえ 文字列のサポート. これは変数にも当てはまります. 文字列を含む変数の名前を指定し、FUNK 式を介してその変数にアクセスしようとした場合, 結果は数値になります 0. したがって, 動的変数に文字列を代入することもできますが、 (上記のように) ただし、を使用しない限り、 “変数の作成” ボタンをクリックして変数の緑色のブロックを作成すると、値にアクセスできなくなります.
- FUNK 式は、特に指示がない限り、変数が浮動小数点数であると想定します。. 動的変数にベクトルを格納した場合, 変数名にプレフィックスを付ける必要があります “v:” 変数にベクトルが含まれていることを FUNK に伝える.
これは、動的変数に格納されているベクトルにアクセスする正しい方法です。:
このコードはベクトルを次のように割り当てます。 10 変数, 次に、を出力します 10 ローカルログへのベクトル:
ついに, 動的変数を確認しました
するクラフトを保存するとシリアル化されます (XML ファイルを調べることによって). 値が正しく復元されることをまだ確認していません, 私はそうだけど 99.9 % 彼らがそうであることは確かだ.
より高度なトピック
定義するのに非常に役立ちます “ヘルパー関数” 類似した値のグループから特定の値を抽出しやすくします。. これはこんな感じです:
これらの関数はすべて単一のパラメータを受け取ります, これは、関連する変数のグループを表す文字列です。, 次に、コレクションから 1 つの特定の変数を返します.
動的変数を使用して数学を実行したい場合, FUNK 表現を使用することをお勧めします (ヘルパー式ではなく) 実現可能な場合. これはこんな感じです:
以下の方法でも同じ結果を達成することができます。 “フォーマット” ブロック (ではなく “参加する” ブロック), 私は 信じる 結合ブロックのほうが速い. これはこんな感じです:
結論
以上です、皆さん — これで、あなたも Vizzy 変数を動的に定義できるようになりました, 変数リストに大量の変数を追加する必要性から解放されます。.