Ich versuche, die Existenz von zwei Array-Werten zu vergleichen, aber innerhalb des Iterators every
scheint der Vergleich nicht zu funktionieren.
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;
}
}
und so bekomme ich den folgenden Fehler:
Nicht abgefangene Ausnahme: TypeError: Closure 'compareArrays_closure': type '(dynamic) => dynamic' ist kein Untertyp von Typ '(int) => bool'
Wie könnte ich das Array durch die einzelnen Werte iterieren und was mache ich oben falsch?
Das Problem ist, dass Dart nicht genau ableiten kann, welche Typen array1
und welche Typen es array2
sind, also weiß es nicht, was die Funktion contains
sein soll. Wenn Sie Typen für die Funktionsargumente angeben, funktioniert es wie erwartet einwandfrei:
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;
}
}
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen