Dart構文(二):オペレータおよび構造関数
6604 ワード
タイプテストオペレータ
オペレータ
説明
as
Typecase(タイプ変換)
is
オブジェクトがこのタイプの場合はtrueを返します.
is!
オブジェクトがこのタイプの場合falseを返します. isの使用は、personが は実行されません. asの使用は、personが が放出される.
Assert が放出される.
Classオブジェクト上で複数の操作を実行するには、カスケードオペレータ( を使用することができる.
インスタンス変数インスタンス変数を定義するときに、コンストラクション関数または他の関数ではなく値を設定すると、コンストラクション関数および初期化リストが実行される前に、コンストラクション関数および初期化リストが実行される が発生する.
コンストラクタ構造関数パラメータ付与 と略記することができる.コンストラクタは、 の継承をサポートしません.ネーミングコンストラクタ 名前付きコンストラクタで複数のコンストラクタを提供するか、より明確な情報を提供する .親にパラメータのないデフォルトのコンストラクション関数がない場合は、子クラスが親コンストラクション関数を手動で呼び出す必要があります. を指定します.
リダイレクトコンストラクション関数いくつかのコンストラクション関数は、同じクラスの別のコンストラクション関数 を呼び出すだけである.定数コンストラクション関数クラスが変更されていないオブジェクトを生成する場合、これらのオブジェクトをコンパイラ定数として定義できます. を実装する.ファクトリコンストラクション関数1つのコンストラクション関数が常に新しいオブジェクトを作成する必要がない場合(またはキャッシュからインスタンスを返す)、 を修飾することができる.
オペレータ
説明
as
Typecase(タイプ変換)
is
オブジェクトがこのタイプの場合はtrueを返します.
is!
オブジェクトがこのタイプの場合falseを返します.
null
またはPersonでない場合、判断の文if (person is Person) { // Type check
person.firstName = 'Bob';
}
null
またはPersonでない場合、異常(person as Person).firstName = 'Bob';
Assert
assert
文は検出モードのみで有効であり、生産モードでは何の効果もないassert
文を使用して実行条件を検出します.条件がfalse
であると、実行が中断する異常(AssertionError
)Class
..
)querySelector('#button')
..text = 'Click to Confirm' // Get an object. Use its
..classes.add('important') // instance variables
..onClick.listen((e) => window.alert('Confirmed!')); // and methods.
インスタンス変数
コンストラクタ
class Point {
num x;
num y;
Point(num x, num y) {
// , !
this.x = x;
this.y = y;
}
}
は、class Point {
num x;
num y;
//
Point(this.x, this.y);
}
class Point {
num x;
num y;
Point(this.x, this.y);
//
Point.fromJson(Map json) {
x = json['x'];
y = json['y'];
}
}
:
の後のコンストラクタボディの前に呼び出す親コンストラクタclass Person {
Person.fromJson(Map data) {
print('in Person');
}
}
class Employee extends Person {
// Person
// super.fromJson(data)
Employee.fromJson(Map data) : super.fromJson(data) {
print('in Employee');
}
}
main() {
var emp = new Employee.fromJson({});
// :
// in Person
// in Employee
}
class Point {
num x;
num y;
Point(this.x, this.y); //
Point.alongXAxis(num x) : this(x, 0); //
}
const
のコンストラクタを使用してインスタンス変数に値を割り当てる、final
にインスタンス変数を設定して、class ImmutablePoint {
final num x;
final num y;
const ImmutablePoint(this.x, this.y);
static final ImmutablePoint origin = const ImmutablePoint(0, 0);
}
factory
キーワードでコンストラクション関数class Logger {
final String name;
bool mute = false;
// _cache is library-private, thanks to the _ in front of its name.
static final Map _cache = {};
factory Logger(String name) {
if (_cache.containsKey(name)) {
return _cache[name];
} else {
final logger = new Logger._internal(name);
_cache[name] = logger;
return logger;
}
}
Logger._internal(this.name);
void log(String msg) {
if (!mute) {
print(msg);
}
}
}