如何在运行时确定Dart中的列表是否为“固定列表”?
在Dart中有(至少)三种方法可以创建固定长度列表:
var fixed = new List(5); // fixed at five elements
var alsoFixed = new List.filled(5, null); // fixed at five elements, set to null
var fixedToo = new List.from([1,2,3], growable: false);
如何在代码中询问fixed
,alsoFixed
和fixedToo
是否为固定长度?
答案 0 :(得分:3)
您可以尝试添加元素并将其删除,以了解列表是否具有固定长度:
bool hasFixLength(List list) {
try {
list
..add(null)
..removeLast();
return false;
} on UnsupportedError {
return true;
}
}
答案 1 :(得分:0)
runtimeType
可用于此,但不应该因为它不是非常可靠,特别是对于dart2js,否则就没有了。 AFAIR有几个要求增加对此的支持但被拒绝了。
答案 2 :(得分:0)
我们没有添加任何方法来查看列表是否已修复(或const
)。
到目前为止,我们只遇到过一个用例,它适用于编写良好的代码:检查函数是否返回了一个可变数组。我们认为这个用例不值得更改API。
大多数情况下,要求修改现有列表的附加布尔标志更清晰(从那时起,调用者可以决定被调用者应该做什么)。
如果您有其他用例,请告知我们,我们会进行调查。