List<int> getNumbers() {
List<int> numbers = [];
for (int i = 0; i < 100; i ) {
numbers.add(i);
}
return numbers;
}
我想回傳一個整數串列,但串列本身是使用回圈生成的,所以有沒有辦法直接回傳回圈的值而不創建另一個串列來存盤每次迭代的值?
uj5u.com熱心網友回復:
我不完全清楚你在要求什么。您想回傳一個串列,但也不想創建一個串列。
您不是在函式內部創建另一個串列。您正在創建的串列,然后回傳該串列。游戲中只有一個串列。
但是,您也可以以不同的方式撰寫它。
首先,你的函式應該是一個名為的 getter numbers,而不是一個名為的函式getNumbers。
您還可以在單??個運算式中創建串列:
[for (var i = 0; i < 100; i ) i]
你可以做的不同的是回傳一個可迭代的:
Iterable<int> get numbers sync* {
for (var i = 0; i < 100; i ) {
yield i;
}
}
那根本不會創建串列。
或者,如果您不想每次都創建一個新串列,請將其快取:
List<int>? _numbers;
List<int> get numbers() => _numbers ??= [
for (var i = 0; i < 100; i ) i
];
要不就
final List<int> numbers = [
for (var i = 0; i < 100; i ) i
];
這將只創建一個串列,并在您每次請求時重復使用它(這可能是一個問題,因為串列是可變的,所以只有在您相信讀者不會修改串列的情況下才這樣做!)
uj5u.com熱心網友回復:
例如,您可以使用 List generate 函式創建一個直接回傳數字串列的 getter
List<int> get getNumbers => List.generate(100, (index) => index 1);
或者使用一個方法
List<int> getNumbers() {
return List.generate(100, (index) => index 1);
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/349349.html
