[FIXED] Dart ist null Prüfung auf Listeneintrag löst Bereichsfehler aus

Ausgabe

Ich habe eine ansonsten leere Liste initialisiert und möchte überprüfen, ob dieser Eintrag wahr oder null ist. Da ich praktisch nicht jeden Eintrag zuerst mit füllen kann false, muss ich prüfen, ob er null oder wahr ist.

List<bool> check = List<bool>();

Ob ich verwende:

(check[index]) ? dothis : dothat;

oder:

(check[index] != null) ? dothis : dothat;

beide werfen einen Bereichsfehler. Da ich es nicht initialisieren kann

List<bool> check = [false,false,false,false,false forever and ever];

Wie kann ich das lösen?

Lösung

Da ich es nicht initialisieren kann

List<bool> check = [false,false,false,false,false forever and ever];

Es klingt für mich so, als ob Sie eine dünn besiedelte List. Wenn ja, verwenden Sie einfach ein Map<int, T>anstelle von List<T>. Dann check[index]wird zurückgegeben, nullwenn das Element noch nicht hinzugefügt wurde:

var check = <int, bool>{};
...
(check[index] ?? false) ? dothis : dothat;

Im Fall von boolwäre es noch besser, a zu verwenden Set<int>und nur auf Vorhandensein zu prüfen, anstatt einen separaten boolWert beizubehalten:

var checked = <int>{};
...
checked.contains(index) ? dothis : dothat;


Beantwortet von –
jamesdlin


Antwort geprüft von –
Willingham (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like