Personal tools
You are here: Home サポート PASSCELL Personal 入門用マニュアル 6. 注意すべきこと 6. 注意すべきこと: 1) 多重継承
Document Actions

6. 注意すべきこと: 1) 多重継承

← [5. 情報を一覧する・探す・出力と入力: 6) リンクファイルとリンクノード]へ戻る | ↑ [目次]へ戻る | [6. 注意すべきこと: 2) エラーについて]へ進む →


■このページで説明している内容

a) スクリプトの多重継承



a) スクリプトの多重継承


このサンプルでは、「ここから」スクリプトを使った場合に気をつけるべき点をを実例で説明します。
まず、以下のサンプルプロジェクトをご覧ください。

[1st]、[2nd]、[3rd]の3つの親ノードが、[Child]という子ノードに接続されています。

図6.1.a-1.jpg

(図6.1.a-1) 親スクリプトを多重継承するサンプルプロジェクト


3つの親ノードにはそれぞれ「ここから」スクリプトに、エレメント"a"に対する
代入式が記述されています。

    [1st]
        a=5;
   
    [2nd]
        a=8;
   
    [3rd]
        a=22;

この時、[Child]という子ノードに定義されているエレメント"a"は、どのノードの「ここから」スクリプトに従うことになるのでしょうか?

結論から言えば、

    「最後に評価されたノードのスクリプトが有効になる」

です。


では、「最後に評価され」るノードはどれになるのでしょうか?
これは、今回のサンプルの場合、[3rd]ノードが最後になっています。
このことは、[Child]ノードの"a"の値からも確認できますが、[Child]ノードを選択した状態でこのノードの上にマウスカーソルを置いた状態にしてみると、このノードで実行されるスクリプトが表示されることからも確認することができます。


図6.1.a-2.jpg

(図6.1.a-2) 実行されているスクリプトを表示する


ここでは、

    a=5;
    a=8;
    a=22;

    _test = a;

と表示され、それぞれ[1st]、[2nd]、[3rd]のスクリプトと、この[Child]ノード自身のスクリプトが順に表示されています。
スクリプトはこの順で実行されているわけです。

実際にどのノードが順に実行されるかは、ノードの位置等には関係なく、PASSCELLの内部でノード情報が読み込まれた順に行われるのですが、基本的には同じ階層にあるノードの評価順序は、不定と考えておいたほうがよいでしょう。

したがって、この例のように同じ子ノードのエレメントに複数の親ノードの「ここから」スクリプトで処理を行わせる場合、思わぬ結果になることが予想されますのでご注意ください。



Powered by Plone, the Open Source Content Management System

This site conforms to the following standards: