我在 for 回圈外宣告了一個串列,然后我在該 for 回圈內為該串列分配了一些值,并且在回圈內列印時更新它的值,但是當我在回圈后列印它時,它給了我一個空串列。
List<List<String>> chunkSizeCollection(List<String> followedList) {
int counter = 0;
int ongoingCounter = 0;
bool isLessThanTen = false;
List<List<String>> returnAbleChunkedList = [];
List<String> midList = [];
log("in followedlist");
followedList.forEach((element) {
if (counter == 0) {
int difference = followedList.length - ongoingCounter;
if (difference < 10) {
// log("in difference if: $difference");
isLessThanTen = true;
}
}
midList.add(element);
counter ;
ongoingCounter ;
if (counter == 10 || (isLessThanTen && ongoingCounter == followedList.length)) {
returnAbleChunkedList.add(midList);
log("returnAbleChunkedList in counter 10 after adding new val is: $returnAbleChunkedList");
//above log works properly and prints the updated list
midList.clear();
counter = 0;
}
});
//this log on the other hand, returns an empty list
log("returnAbleChunkedList: $returnAbleChunkedList before return");
return returnAbleChunkedList;
}
輸出:
[log] returnAbleChunkedList in counter 10 after adding new val is: [[KQTuEPllbmRrlBNvYgZ7oUXwtA63, OZUZOE10IzT8quUFoZbNxZOynU32, fCYIlYemCvbLTc7SpNHw6fCHrcm1, CbcLrtDNOdYZyC23FzEehOrJbKx2, FFvvVHCpPGNKUiXPQD34QdoPqH32, Gk09y59vSVXa1HNhzYvc6Atqnt53, JDO356z8urYQvuktJmc6eNUYqSm2, YesvvNI43gUVYPMfqhG4uRO5t6K2]]
[log] returnAbleChunkedList: [[]] before return
uj5u.com熱心網友回復:
問題是這樣的:
returnAbleChunkedList.add(midList);
midList.clear();
您將物件添加midlist
到串列中,然后將其清除。所以你添加的物件將被清空。您必須創建一個副本或添加串列的元素。
returnAbleChunkedList.add(midList.toList());
// or
returnAbleChunkedList.add(List.of(midList));
// or
returnAbleChunkedList.add([...midList]);
uj5u.com熱心網友回復:
在這一行:
returnAbleChunkedList.add(midList);
您添加對midList
輸出串列的參考。如果您的輸入超過 10 個,您最終將添加多個midList
對輸出串列的參考(即您現在可能有 2 個)。隨后,您清除midList
,因此您現在有一個輸出串列,其中包含對您現在已清除的串列的 2 個參考,因此您最終得到一個包含 2 個空串列的串列。
相反,如果您將其更改為:
returnAbleChunkedList.add(midList.toList());
你會在midList
你的輸出串列中添加一個副本,你最終會得到:
[[a, b, c, d, e, f, g, h, i, j], [k]]
正如你所料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/505813.html
上一篇:是否可以在Lua中自動定義函式
下一篇:R中的多個ggplot