このコードでエラーが発生しないのはなぜですか?
List<String> x;
void main() {
x = [1,23,3,423,2];
print(x);
}
初心者の質問で申し訳ありませんが、ダーツを学び始めたばかりです。これx
は、のリストしか含めることができず、リストではなくString
リストの値のために例外を発生させる必要があることを理解しているためです。これはバグですか、それとも?String
num
このコードでエラーが発生しないのはなぜですか?
List<String> x;
void main() {
x = [1,23,3,423,2];
print(x);
}
初心者の質問で申し訳ありませんが、ダーツを学び始めたばかりです。これx
は、のリストしか含めることができず、リストではなくString
リストの値のために例外を発生させる必要があることを理解しているためです。これはバグですか、それとも?String
num
これは、動作中のオプションの入力です。
var x; // same as List<String> x
List<String> y;
main() {
x = [1,2,3,4];
y = x; // valid
x = y; // valid
print(x); // [1,2,3,4]
print(y); // [1,2,3,4]
}
List<String>
指定するか、を指定するかにかかわらずvar
、コードは同じように実行されます。タイプアノテーション(List<String>
)は、コードを検証するためにツールによって使用されます。
dartlangサイトで読むのに良い記事は、オプション型に関する記事です。
編集:実際、これはリストについての興味深い点でもあります。リテラルリスト(例:)を使用してリストを初期化すると、[]
実際にはList()
、例:を作成することになります。
main() {
var x = new List();
var y = [];
print(x is List); // true
print(y is List); // true
}
ただし、ジェネリックスを使用して型付きリストが必要な場合は、コンストラクター構文を使用する必要があります。例:
main() {
var x = new List<String>();
print(x is List); // true
print(x is List<String>); // true
print(x is List<num>); // false
}
ダーツタイプはオプションであり、静的ではありません。したがって、実行時にすべてのタイプの注釈は基本的に次のように置き換えられますvar