【问题标题】:How to compare arrays in Dart?如何比较 Dart 中的数组?
【发布时间】:2019-08-03 01:24:51
【问题描述】:

我正在尝试比较两个数组值的存在,但在迭代器内部,比较 every 似乎不起作用。

void main() {
  var array1 = [1, 2, 3, 4];
  var array2 = [2, 3, 4, 1];
  print("Arrays are equal: ${compareArrays(array1, array2)}");
}

bool compareArrays(array1, array2) {

  if (array1.length == array2.length) {
    return array1.every( (value) => array2.contains(value) );
  } else {
    return false;
  }

}

所以我遇到了上述错误:

未捕获的异常:TypeError: Closure 'compareArrays_closure': type '(dynamic) => dynamic' 不是 '(int) => bool' 类型的子类型

如何遍历每个值的数组以及我在上面做错了什么?

【问题讨论】:

标签: arrays dart


【解决方案1】:

问题是 Dart 无法准确推断出 array1array2 是什么类型,所以它不知道函数 contains 应该是什么。如果您为函数参数指定类型,它将按预期正常工作:

void main() {
  var array1 = [1, 2, 3, 4];
  var array2 = [2, 3, 4, 1];
  print("Arrays are equal: ${compareArrays(array1, array2)}");
}

bool compareArrays(List array1, List array2) {

  if (array1.length == array2.length) {
    return array1.every( (value) => array2.contains(value) );
  } else {
    return false;
  }
}

【讨论】:

  • 哦!我犯了什么小错误,大声笑,忘记提及函数参数类型,当您来自JS时会发生这种情况,谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-21
  • 2011-02-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多