DartのListクラスfillRange()メソッドについてメモ書き。
fillRange()メソッドは指定した範囲の要素を上書きする。
引数は以下の通り。
引数 | 必須/オプション | 型 | 説明 |
---|---|---|---|
第1引数 | 必須 | int | 上書き開始位置を指定。 |
第2引数 | 必須 | int | 上書き終了位置を指定。指定した値未満の要素を上書きする。 |
第3引数 | オプション | [E? fillValue] | 要素を上書きする値を指定。配列の要素がnull許容を許さない場合、値の指定は必須。 |
コーディングでfillRange()メソッドを確認。
void main() {
try {
final listTest = <String>["Apple", "Orange", "Banana"];
listTest.fillRange(0, 2, "Rice");
print(listTest);
} catch (e) {
print(e.toString());
}
}
実行結果。
開始位置が「0」終了位置が「2」未満なのでインデックス「0」と「1」の要素が「Rice」で上書きされる。
[Rice, Rice, Banana]
次は配列の要素がnullを許容しない場合を確認。
void main() {
try {
final listTest = <String>["Apple", "Orange", "Banana"];
listTest.fillRange(0, 2);
print(listTest);
} catch (e) {
print(e.toString());
}
}
実行結果。
fillRange()メソッドの第3引数がnullのためエラーとなる。
type 'Null' is not a subtype of type 'String' in type cast
配列の要素がnullを許容する場合を確認。
配列の型を<String>から<String?>に変更。
void main() {
try {
final listTest = <String?>["Apple", "Orange", "Banana"];
listTest.fillRange(1, 2);
print(listTest);
} catch (e) {
print(e.toString());
}
}
実行結果。
インデックス1の要素がnullになる。
[Apple, null, Banana]
コメント