如何确定Dart列表是否是固定列表?

时间:2015-07-06 20:35:54

标签: dart

如何在运行时确定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);

如何在代码中询问fixedalsoFixedfixedToo是否为固定长度?

3 个答案:

答案 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。

大多数情况下,要求修改现有列表的附加布尔标志更清晰(从那时起,调用者可以决定被调用者应该做什么)。

如果您有其他用例,请告知我们,我们会进行调查。