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値 から他への代入とは、単純な「オブジェクト」への参照と同様な参照のコピーです。