前のページ

言語編

次のページ


Metadata (Metadata)

メタデータ(MetaData)はプログラム・コードに付加的情報を与えるものである。これは自分のコードの一部に対しその目的や状態など示すタグだと考えればよい。メタデータは一連のアノテーションたちで構成され、その各々は文字@で始まり以下コンパイル時定数(例えばdeprecated)への参照、または定数コンストラクタ呼び出しが続く。

注意:メタデータはセミコロン(;)では終了しない。

現在@deprecated@override2つが総てのDartコードに対して使える。

@deprecatedアノテーションの例を挙げる:

class Television {
  /// _Deprecated: Use [turnOn] instead._
  @deprecated
  void activate() {
    turnOn();
  }
  /// Turns the TV's power on.
  void turnOn() {...}
}

これはactivateという関数はもう使われなくなった(deprecated)ので代わりにturnOnという関数を使っていることを示している:

副型のインスタンス・メソッド、ゲッタ、セッタなどを書き換えることができる。@overrideアノテーションはあるメンバを意図的に書き換えていることを示すために使うことができる:

class SmartTelevision extends Television {
  @override
  void turnOn() {...}
  // ···
}

自分自身のアノテーションも定義できる。ここでは2つの引数を持った@todoアノテーションを示す:

library todo;
class Todo {
  final String who;
  final String what;
  const Todo(this.who, this.what);
}

この@todoアノテーションを使った例を示す:

import 'todo.dart';
@Todo('seth', 'make this do something')
void doSomething() {
  print('do something');
}

これは別のプログラマのSethに対しこの箇所を作ってくれと指示する内容になっている。


メタデータはライブラリ、クラス、typedef、型パラメタ、コンストラクタ、ファクトリ、関数、フィールド、パラメタ、あるいは変数宣言の前に、及びインポートまたはエクスポート指令の後に置かれ得る。リフレクション(reflection)を使って実行時にメタデータを検索できる(参考となる記事)。





前のページ

次のページ