繁体   English   中英

如何在 Dart 中使用 optional 来实现空安全

[英]How to use optional in Dart for null safety

我发现这个为 Dart 实现 Optional 的包: https : //pub.dev/packages/optional/example

在示例中,它执行以下操作:

void filterExample() {
  final hello = Optional.of('hello');
  final world = Optional.of('world');
  final name = Optional.of('harry');

  for (var o in [hello, world, name]) {
    final filtered = o.filter((v) => v.startsWith('h'));
    print(filtered.isPresent);
  } // prints "true", "false", "true"
}

但是我如何强制一个变量成为某种类型的 Optional 呢? 我想要Optional<String>Optional<int>等,但我不得不在开始时给出一个值。

我能想到的最接近的是

最后 anEmpty = Optional.ofNullable(null);

这已经在示例中,但什么是Nullable 如果我这样做,我不能将值限制为Stringint ,它可以更改为任何内容。 我想在使用 Optional 时坚持使用强类型。

如果这个库无法做到这一点,那么我如何制作我自己的支持模板的简单 Optional 类型,以便我可以拥有Optional<String>Optional<int>等?

您正在寻找的行为(如果为 null 则执行某些操作,否则执行其他操作)可以使用?? 操作员。

这基本上是一个空检查,如果不为空则等于左手,如果为空则等于右手。 示例: doSomething(myString ?? "Default value of my string");

这回答了你的问题了吗? 抱歉,我没有用过那个包,也没有必要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM