KH-FDPL に関するメモ-0006
KH-FDPLの特徴(2) - オブジェクト(変数)の名前空間・型
- (2-1) KH-FDPLではすべてのオブジェクトに名前が付きます。変数名やメンバ名だと思うと分かりやすいと思います。
- (2-2) オブジェクト名とメンバ名を区切るのは「.」です。KH-FDPLではファイルの代わりもオブジェクトが担うので、スラッシュ区切りも検討しましたが、とりあえずはピリオドで区切ります。
- しかしこのような仕様については、ユーザが自由に拡張できます。これは(4)で書きます。
- (2-3) KH-FDPLでは、任意のオブジェクトに対して、いくらでもメンバを追加したり削ったりすることができます。もちろんプログラムの実行中に、プログラムからできます(そういう命令群がある)。ただし同じ階層でのメンバ名の重複は許されません。
- C++などでいうところの「クラス」という概念がないので、このオブジェクトは○○クラスに属するので、○○メンバを必ず持つ必要がある、みたいなことは記述できません。
- イメージとしては、フォルダにファイルをいつでも追加したり削除した入りできるのと同じです。
- (2-4) オブジェクトは基本的にフォルダとして内部表現されることになります。
- メンバ名は英数字以外にも使えて、内部ではメンバ名でソートされて管理されます。メンバ名を指定してメンバにアクセスできるほかに、「ソート順でi番目のメンバ」みたいな方法でもメンバを指定できます。これができるからこそ、全メンバの列挙なども可能になります。
- 配列もメンバ名が「int32型の整数値」になっているだけで、結局は同じ仕組みで管理されています。したがって添え字が負になったり、値が飛び飛びになっていたりしても問題ありません。
- (2-5) オブジェクト変数は型を持ちません。値が型を持ちます。iはint32型の変数だから整数値しか代入できない・・・みたいなことはできなくて、iには何でも代入できます。さっきはint32を入れておいたのに、今後は文字列を入れる、みたいなこともできます。
- ということで動的型付き言語ということにもなります。
- (2-6) オブジェクト名やメンバ名は、後から変更することもできます。
- まさにファイル名を書き換える感じです。
- 変更しても、ポインタなどには影響しません。それは内部では名前に頼らずに管理用のIDで管理しているためです。
- 同様にあるオブジェクトのあるメンバを「移動」して、他のオブジェクトのメンバにすることもできます。これでも影響はありません。
- (2-7) オブジェクトはタイムスタンプやリビジョンを持ちます。
- タイムスタンプについては、ファイルについているタイムスタンプと同様のものです。作成日時と最終更新日時を保持できます。
- リビジョンというのは、オブジェクトが書き換えられると値が増加する整数値で、もしこれが変わっていなければ、内容を精査しなくても値が変わっていないことを確認できます。リビジョン値は書き換えられるたびに+1するというわけではなく、どのくらい値が増加するかは、特に決められていません。でもとにかく増加します。
- リビジョンはメンバを持つオブジェクトにも有効で、もしリビジョンが変化していなければ、より下層のすべてのメンバが変更されていないことを保証します。
こめんと欄
|