我正在尝试访问一个列表,但前提是它不为空。在收到一些奇怪的路径后,我发现 List.isNotEmpty 返回的长度为 0,并且它不为空。当然,除非我所认为的“空”是错误的心态?
这是我运行的测试,我在其中创建了一个“空”列表。然后,我测试了一下,看看测试 isNotEmpty 时返回了什么。
List<String> myKeywords = [];
if(myKeywords.isNotEmpty){
print("Keywords is not empty..?");
print("Keywords length = ${myKeywords.length}");
print("Keyword: \"${myKeywords.first}\"");
}
Run Code Online (Sandbox Code Playgroud)
// 输出
Keywords is not empty..?
Keywords length = 0
// Error: Bad state: No element
Run Code Online (Sandbox Code Playgroud)
这与字符串的工作方式不同:
String myString = "";
if(myString.isNotEmpty){
print("myString is not empty..?");
print("myString length = ${myString.length}");
}
else{
print("myString is empty");
}
Run Code Online (Sandbox Code Playgroud)
输出:
myString is empty
Run Code Online (Sandbox Code Playgroud)
查看文档,List.isNotEmpty 声明如下:
Whether this collection has at least one element.
May be computed by checking if iterator.moveNext() returns true.
Example:
final numbers = {1, 2, 3};
print(numbers.isNotEmpty); // true;
print(numbers.iterator.moveNext()); // true
Run Code Online (Sandbox Code Playgroud)
谁可以给我解释一下这个?或者,也许这是一个错误?
Android Studio Dart SDK 版本 - 2.19.4(稳定) Flutter 版本 - 3.7.7(稳定)
谢谢你!
它实际上正在按预期工作。尝试调试你的程序,因为上面的输出不正确
确保您没有在isNotEmpty初始化之间添加任何元素。
以下代码的输出将是:
List<String> myKeywords = [];
if (myKeywords.isNotEmpty){
print("Keywords is not empty..?");
print("Keywords length = ${myKeywords.length}");
print("Keyword: \"${myKeywords.first}\"");
} else {
print("Keywords is empty");
}
Run Code Online (Sandbox Code Playgroud)
以下代码应返回Keywords is empty.
检查此DartPad链接。
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |