在JS中,有undefined和null。undefined 表示“没有值”,null 表示“相当于空的值”。然而,在 Dart 中(可能在其他语言中,我不知道,但现在我正在使用 Dart),没有未定义的,只有 null。因此,不可能区分等同于空的价值和没有价值。
Dart 中有模拟这种差异的标准方法吗?
不。null值(类型Null)是唯一表示值不存在的内置值。它不区分该值缺失的原因。
它也是(几乎)唯一可以直接在类型系统中与另一种类型组合的类型。通过空安全,您将能够编写int?-or- 。intNull
如果您想要另一个缺席标记,您可以使用(或编写)Option如下类型:
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");
}
Run Code Online (Sandbox Code Playgroud)
然后您可以表示值或不表示值。(这样的类已有实现,例如在 quiver 包中)。
| 归档时间: |
|
| 查看次数: |
2268 次 |
| 最近记录: |