2009-07-08 3 views

答えて

3

Actionscriptのプライベート変数は、その前に_が付いている傾向があります。次に、_を付けずにゲッター/セッターにパブリックアクセスを許可します。

1

Actionscript 2.0では、_variableはオブジェクトの組み込みプロパティであることを意味しました。しかし、3.0が出る前に私はActionscriptの使用を止めました。私が知っている限り、3.0のために変更されている可能性があります。

2

おそらくnaming conventionが使用されていることがわかります。言語の観点からは特別な意味はありません。

+0

私はそれが何を意味するのか知りたかったという命名規則だと思った。 – Anton

+0

@Antonだからこそ私はリンクを含んでいたので、なぜ命名規則が重要であるか理解できた。しかし、言語の観点からは、それは重要ではありません。 – Joseph

2

JavaScriptでは、JavaScriptでアクセスレベルを制御するのが非常に難しいため、「この値に触れないでください」という意味のJavaScriptでは、_を使用していました。変数を外​​部から実際にアクセスできない状態にするのはかなり苦しいですa ** ...

のActionScript 2.0および1では、全くルールがありません:D ...たとえば、MovieClipのクラスでは、ActionScript 2.0では、_x_yのようなプロパティがあります。 ..最良のものはfocusEnabled_focusrect、両方のブール値、1つの決定、クリップがフォーカスすることができるかどうか、それが黄色の矩形を持っているかどうか、フォーカスされています...

これは実際にフラッシュプレーヤー内部から来るものに本当に関係しているか、それともランダムであるかのいずれかになります... _global,_rootおよび_accPropsがあり、それ以外はTextField,MovieClipおよびButton ...

__(2つのアンダースコア)__resolveはかなり魔法の方法です...そして、あなたがする場合__proto__は、魔法のプロパティです... ...フラッシュプレーヤーで魔法を表すだけでなく、これは非常にではありませんどこでも一貫性があります...

ActionScript 3.0では、API全体でアンダースコアが使用されません。 ...私を含め多くの人が、$ sおよび_ sのprivateprotectedinternal変数を示すために選んだ...しかし、これは、コードが読みやすくし、名前の衝突を防ぐ必要があり、完全に任意の命名規則です...

greetz

back2dos

1

シンプル - _ {あなたの変数名は}それはプライベートだということを意味します。

はAS3では、AS3でゲッターとセッターは、本質的に難読化プロパティのように見えるこのよう

myclass.myvar 

として、これはクラスの透明外にあると示して終わる

public function get myVar():String 
{ 
    return _myVar; 
} 

のようにゲッターとセッターを定義します。したがって、差別化のために何らかの方法が必要です。つまり、秘密は "_"で始まります。

2

class Hello{ 
    private var x:Number; 
    public function get x():Number{...} 
    public function set x(value:Number):void{...} 

    protected var y:Number; 
    public function get y():Number{...} 
    public function set y(value:Number):void{...} 
} 

を書くことも可能であろう。しかし、彼らは同じ名前を持っているので、uは、クラスまたはサブクラス内からそれらにアクセスするたびに、あなたのように可能である(、uは意味どちらを指定する必要があります彼らは異なる名前空間にあります)。これは

var before:Number = private::x; 

やゲッターを使用するようになります。保護のため

var before:Number = public::x; 

が、これはでも、すべてのサブクラスで続けられるvarsの...アンダースコアを好まない

人々が使用することができます名前を一意にするための他の構文c#のようなgetterとsetterの大文字の最初の手紙。

0

私はすべてのプライベート変数の前にゲッターやセッターのない "_"を付けてしまう傾向があります。この方法は、私がコードを見ながら、関数が自分の私的変数を操作していることをすぐに知ることができます。それはちょっとしたことだと思われますが、それはかなり役に立ちます。

あなたがしていることを絶対に知らない限り、保護された変数を使用しないようにしてください。彼らは悪です。これを使用する唯一の理由は、サブクラスがスーパークラスの変数にアクセスできるようにすることだけです。しかし、保護された変数の値が何らかの形でスーパークラスにとって非常に重要であった場合、スーパークラスはそのサブクラスがそれを変更したかどうかを決して知らないでしょう。プライベートにして、サブクラスの保護されたgetterおよび/またはsetterを提供する方が良いでしょう。このようにして、スーパークラスは値を変更しようとするあらゆる試みに応答することができます。

関連する問題