2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

はじめに

10個以上の属性を持つ複雑な変数を初期化したい場合に、属性単位で空値を設定するのって面倒くさいですよね。。。一発でやりましょうや!というお話です。

BizRobo!における変数のおさらい

BizRobo!の変数には大きく分けてプリミティブ型1 に近いシンプルな変数と複合データ型である複雑な変数が存在します。

これは変数そのものの構造・構成から見た場合の切り分けで、さらには変数のスコープで見た場合の切り分けとして、ローカル変数グローバル変数が存在します。

実際に変数をロボットの中で利用する場合には、以下のような組み合わせパターンになります。

ローカル グローバル
シンプル 1.png 2.png
複雑 3.png 4.png

変数の使い分けはロボットの品質に影響を与える判断なので作成時に意識して行いますが、実際に変数に値を割り充てたり初期化したりする方法については割と工夫していなかったりします。

最初に習う変数の使い方

変数に値を割り当てる方法として、個別の要素(シンプルな変数複雑な変数の属性)を指定するやり方を最初に習います。

実際に「アプリケーション画面から特定の項目をコピーして、変数に割り当てる」操作と同じ粒度(個別の値)で変数を扱うのでわかり易いです。

ベーシックエンジンロボット ロボット
image.png image.png

復号データ型である複雑な変数においては、「変数タイプ . 属性」という形式で変数を操作します。

ただ、例えば下のような多くの属性を持つ複雑な変数の「全ての値」を空に(クリア)したい場合、含まれる属性の数だけ値を空にしていくのは面倒です。(というかあまり意味のないステップがロボット内に広がるのが嫌です:persevere:

image.png

変数タイプ全体に値を割り当てる方法

以下、必要になるケースが限られる2ため見落とされがちですが、変数自体を初期化したい場合や同一タイプの別変数に中身をコピーしたい場合に有用な方法です。

まずは前段で示した複雑な変数をロボットの中に「全部乗せ」「Flush」と命名して組み込みます。

  • 「全部乗せ」は実際に値を割り当ててロボットの処理の中で利用するための変数です。
  • 「Flush」は常に空にしておく変数で、「全部乗せ」を初期化する際に上書きするための変数です。
    image.png

その後、変数の割り当てアクションにて「変数タイプ . 属性」という形式ではなく、「変数タイプ」という形式で「値/エクスプレッション」と「変数」をともに設定します。

両者は同じ構造(変数タイプ)である必要があります。

ベーシックエンジンロボット ロボット
image.png image.png

この方法は青いアイコンでおなじみのベーシック エンジン ロボットでも緑アイコンのロボットでも同様に利用できます。

アプリケーションの画面から値を抽出する場合には「最初に習う変数の使い方」と同様に割当先の変数項目は1つに限定されます。3

サンプルロボット

上で紹介したロボットのソースファイルを GitHub に登録してますので、内容がイメージしにくい場合には実際に動かして確認してください。(v10.4.0.1で作ってあります)

まとめ

他の人が作ったロボットを見ていて「ふっ」と思い立ったので書きました。

  1. https://e-words.jp/w/%E3%83%97%E3%83%AA%E3%83%9F%E3%83%86%E3%82%A3%E3%83%96%E5%9E%8B.html

  2. 例えばグローバル変数をループの中で使用している場合、ループを跨いでも一度設定した値が保持され続けてしまうため、「敢えてループの最初で変数を初期化してきれいな状態でその後の処理に臨む。」ということがあります。ローカル変数を使うことによってイテレーションごとに自動的に初期化されるため、ループだけならグローバルにする必要はないのですが、ループの中でブランチが分かれていて、ブランチ間のデータについては保持したい。。という場合には、DBにデータを保存するか、グローバル変数を使わざるを得ない。という感じです。

  3. 画面から抽出したデータの割当先は1つの変数/変数の属性に限定されますが、抽出元のデータ構造がある程度固定であれば一発で抜き出す仕組みを組み込むこともできます。ただ、それが必要かというと。。。。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?