NOTE!

Q
プロパティと同じ名前のオブジェクトが作成できる

A
オブジェクト生成時に、プロパティやメソッドなどと同じ名前で生成することが可能です。
ただし、プロパティやメソッドなどと同じ名前でオブジェクトを生成する場合、以下のような仕様となります。

・オブジェクト同士の衝突
 新しいオブジェクトを生成した同じ階層に、すでに同じ名前のオブジェクトが 存在する場合、
 既存のオブジェクトは自動的に削除されます。

・プロパティとの衝突
 プロパティ名と同じ名前で子オブジェクトを生成すると、オブジェクトの検索が優先されます。
 プロパティはオブジェクトに隠れて利用することができなくなります。

・メソッドとの衝突
 メソッド名と同じ名前で子オブジェクトを生成すると、オブジェクトの検索が優先されます。
 メソッドはオブジェクトに隠れて利用することができなくなります。

・クラス名との衝突
 クラス名と同じ名前のオブジェクトを生成すると、そのオブジェクトのスコープ内では、衝突した
 クラスのStaticメソッドやStaticプロパティにアクセスできなくなります。


[サンプルコード]

・オブジェクト同士の衝突

    Button Button1 {
        X = 5;
        Y = 30;
        Width = 120;
        Height = 25;
        Title = "Button1";

        Number obj = 123;

        Function OnTouch( e ) {
            /* 既に存在するオブジェクトの名前と同じオブジェクトを生成 */
            /* 自動的に Number の obj が削除されます。 */
            String obj = "abc";
            print( obj, "\n" ); /* 結果は "abc" となる */
        }

    }

・プロパティとの衝突

    Button Button1 {
        X = 5;
        Y = 30;
        Width = 120;
        Height = 25;
        Title = "Button1";

        /* プロパティ名と同じ名前でオブジェクトを生成 */
        String Title = "タイトル";

        Function OnTouch( e ) {
            /* 元のプロパティは利用することができなくなります。 */
            /* ボタンのタイトルは変更されません。 */
            Title = "Change";
        }
    
    }

・メソッドとの衝突

    EditBox EditBox1 {
        X = 5;
        Y = 30;
        Width = 130;
        Height = 50;
        ScrollBarPosition = $NONE;

        /* メソッド名と同じ名前でオブジェクトを生成 */
        String AppendCR;

        Function OnTouch( e ) {
            value = "abc\n123";
            /* メソッドは利用することができなくなります。 */
            AppendCR();
        }
    }

・クラス名との衝突

    /* クラス名と同じ名前のオブジェクトを生成 */
    Button Date {
        X = 5;
        Y = 30;
        Width = 120;
        Height = 25;
        Title = "Button1";

        Function OnTouch( e ) {
            /* 衝突したクラス(Date)のStaticメソッドは利用できなくなります。 */
            Date.parse("2004/01/01");
        }
    }
管理番号:Pnt_018
  Biz-Collections Bizの宝箱 トップへ
  Biz/Browser・Biz/Designer TIPS集 トップへ