2012年3月2日金曜日

Dartで変数の型を調べる

このエントリーをはてなブックマークに追加
Dart において変数の型を調べるには、is 演算子を使います。
var a = 1;
print('a is int: ${a is int}'); // true
型Aが型Bから派生して作られている場合は、A is B は true となります。
class B {}
class A extends B {}
main () {
  var a = new A();
  print('a is B: ${a is B}'); // true
  var b = new B();
  print('b is A: ${b is A}'); // false
}
Dart におけるすべての型は Object クラスを継承するので、is Object とすると比較対象がどのような型であっても常に true になります。
print('1 is Object: ${1 is Object}'); // true
print('"a" is Object: ${"a" is Object}'); // true
対象が null であっても is Object の結果は true です。
print('null is Object: ${null is Object}'); // true
したがって、変数がnullかどうかのチェックをするのに is Object は使えません。null と直接比較しましょう。
func(var x) {
  if (x is Object) { /* たとえxがnullであっても、ここは常に実行される。 */ }
  if (x != null) { /* xがnull以外の場合のみ実行される。 */ }
}

0 件のコメント:

コメントを投稿