Jak symulować undefined w Dart
W JS występuje undefined i null. Niezdefiniowany oznacza „brak wartości”, null oznacza „wartość równoważną pustce”. Jednak w Dart (i prawdopodobnie w innych językach, nie wiem, ale teraz używam Dart) nie ma nieokreślonego, tylko null. Dlatego niemożliwe jest dokonanie rozróżnienia między wartością równoważną pustce a brakiem wartości.
Czy istnieje standardowy sposób symulacji tej różnicy w Dart?
Odpowiedzi
Nie. nullWartość (typu Null) jest jedyną wartością wbudowaną, która reprezentuje brak wartości. Nie rozróżnia, dlaczego wartość jest nieobecna.
Jest to również (prawie) jedyny typ, który można łączyć z innym typem bezpośrednio w systemie typów. Przy zerowym bezpieczeństwie będziesz mógł pisać int?dla int-lub- Null.
Jeśli potrzebujesz innego znacznika nieobecności, możesz użyć (lub napisać) Optiontypu takiego jak:
abstract class Option<T> {
final T value;
bool get hasValue => true;
Option(this.value);
factory Option.none() => const _OptionNone();
}
class _OptionNone implements Option<Never> {
const _OptionNone();
bool get hasValue => false;
T get value => throw UnsupportedError("None option has no value");
}
Następnie możesz przedstawić wartość lub brak wartości. (Istnieją implementacje takiej klasy np. W pakiecie kołczan ).