RTVal とは何であるか

RTVal とは、KL言語によって管理されるデータのコンテナです。”RTVal” はもともと “Registered Type Value” をくっつけた言葉で、もともとは歴史的に Fabric Engine での KLの型を表す名称でした。

RTVal には3つの重要な特質があります:『型』を持ち, 『値』をもち, 『参照カウント』されます。

RTVal は型を持つ

RTVal はあるKLの型を持ちます。この型は RTVal作成時に指定し、以後不変です。

RTVal はどのようなKLの型でも “ほぼ” [1] 取れます。型は internalな型でも事前定義された型でも、ユーザ定義の型 ―構造体あるいはオブジェクトでも可能です。

[1]ただし例外があり、”internal” 型のうち他 ―システムのうち非KLなものと相互作用するもの、例えば Container は不可能です。

RTVal は値を持つ

RTVal は値を持ちます。初期値はRTVal作成時に決定されます。

KL言語内での値であるため、RTVal は他のデータと同様のライフサイクル処理を遂げます。RTVal が作られると、その型の コンストラクタ が呼ばれます。おなじように破棄時にはそれらの型の デストラクタ が呼ばれます。

RTVal の値は変更可能です。つうじょう以下2つのうちいずれかです:

  • RTVal の型の (read-write)メソッドをそのRTValで呼び出す。あるいは
  • RTVal を他のメソッド(もしくは関数)へ io 引数として渡す。

RTVal は参照カウントされる

RTVal は参照カウントされるオブジェクトであり、 Fabric Engine クライアントが所持します。あるRTValへの最後の参照カウントが落ちると、そのRTVal は破棄されます。 Python や C++内であれば、あるRTVal値 から他への代入とは、単純な「オブジェクト」への参照と同様な参照のコピーです。