Arrays 如何在Dart中比较阵列?

Arrays 如何在Dart中比较阵列?,arrays,dart,Arrays,Dart,我试图比较存在的两个数组值,但在迭代器中,比较似乎不起作用 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) {

我试图比较存在的两个数组值,但在迭代器中,比较似乎不起作用

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:闭包“Comparararray\u闭包”:类型 “dynamic=>dynamic”不是“int=>bool”类型的子类型


我如何通过每个值迭代数组,以及我在上面做的错误是什么?

问题是Dart无法准确推断array1和array2是什么类型,所以它不知道函数应该包含什么。如果为函数参数指定类型,它将正常工作:

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时就会发生这种情况,谢谢如果你只需要检查列表的相等性,你可以按照这个答案来做