WSN追加案(コモンと式): 限定的に構造体/複合値/オブジェクトを扱えるようにする

Issue #1020 new
k4nagatsuki repo owner created an issue

#809の実現のために構造体的なものを扱えるようにする事を考えます。以下は試案です。

  1. 当面構造体は独自に定義できず、特定の関数の結果として名前付きのものが定義される。

    1. 例えばFINDCARD(...)のような関数はOWNER(数値型)とINDEX(数値型)の2つのメンバを持つ構造体CARDINFOを返すなど。
    2. 構造体名は構造体を文字列化する時に使用する。
  2. 構造体はコモンに代入できる。

  3. 構造体本体は演算に使用できない。
  4. 構造体のメンバには<構造体値>.<メンバ名>でアクセスできる。例えば@"CI".OWNERFINDCARD(...).INDEXなど。
  5. 文字列化した時は<構造体名>(<値1>, <値2>, ...)のような結果になる(6.と同様)。
  6. 構造体名を使った関数的な書式で値を生成できるようにする。例えばCARDINFO(1, 1)

将来的にはユーザ構造体を定義できるようにしたいですが、当面は以上の最小限の内容を考えています。

6.はシナリオを作る分には(当面)いらないと思いますが、コモン値をデバッガから設定する時に必要です。

機能の名前については、タイトルのように構造体とか複合値とかオブジェクトとか考えましたが、どれが一番分かりやすいか私には判断できません(マニュアルにしか出てこない語になるはず)。


ユーザ関数もそうですが、ユーザ構造体を定義できるようにする時には組み込みのものとは異なる書式で生成できるようにした方がよいように思います。さもないと組み込みとの名前の衝突の問題が出てきます。

Comments (4)

  1. hand.onlooker

    手触りとしては、メンバ機能を持ったシステム変数という理解でよろしいでしょうか?

  2. k4nagatsuki reporter

    そういう事になります。

    今のところ役割は、複数の変数を一つにまとめる事だけです。

  3. k4nagatsuki reporter

    pull request #253

    構造をできるだけ隠蔽したいので、生の構造体の生成やメンバへのアクセスを制限する仕組みを設けました。

    コモンに格納してセーブできてしまうというのもなんとかしたいところではあります。例えばイベント終了後のCARDINFOにはアクセスできるべきではありません。

  4. Log in to comment