2012年3月6日火曜日

Dartでクラスや変数の見え方を制御する

このエントリーをはてなブックマークに追加
Dartでは、識別子の前にアンダーバー _ をつけると、識別子を定義したライブラリ内でしか見えなくなり、ライブラリの外から参照しようとするとエラーになります。いわゆるプライベートです。

mylib.dart
#library('my_lib');
class A {
  String x;
  String _y;
}
#import('mylib.dart');
main() {
  A a = new A();   // OK
  a.x = 'a';       // OK
  a._y = 'a';      // NG
}
メンバー変数だけではなく、メンバー関数や、トップレベルのクラス、関数、変数も同様の方法でプライベートにすることができます。

なお、この機能はライブラリ外から見えなくなるだけで、メンバーをプライベートにしても、同じライブラリ内からは別のクラスからでも参照することができます。
#library('my_lib_2');
class A {
  String x;
  String _y;
}

class _B {}

class Test1 {
  void test() {
    A a = new A();   // OK
    a.x = 'a';       // OK
    a._y = 'a';      // OK

    _B b = new _B(); // OK
  }
}

class Test2 extends A {
  void test() {
    x = 'a';  // OK
    _y = 'a'; // OK
  }
}


こちらもどうぞ

0 件のコメント:

コメントを投稿