arrays - 如何比较 Dart 中的数组?
问题描述
我正在尝试比较两个数组值的存在,但在迭代器内部,比较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' is not a subtype of type '(int) => bool'
我如何通过每个值迭代数组,我在上面做错了什么?
解决方案
问题是 Dart 不能准确推断出什么类型array1
和array2
是什么,所以它不知道函数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;
}
}
推荐阅读
- node.js - 在 ffmpeg 中生成屏幕截图的时间太长
- google-bigquery - 如何从 Dataflow 中的 PCollection 读取 bigQuery
- java - Wildfly 服务器启动延迟
- kotlin - 文件从浏览器上传到泽西(服务器)客户端到泽西服务器
- git - 禁用 git clone 的作曲家缓存
- pandas - 数据处理中的二进制编码
- wordpress - wordpress 网站中的滑块效果
- android - (谷歌地图)检查 LatLng 是否在可见区域经度的 80% 以内
- python - 在数据框的列中操作日期时间的计算
- qt-creator - 选择Git时如何有条件地生成文件?