相当于 Dart 中 Swift 的 if let 和 guard let

Equivalent of if let and guard let of Swift in Dart

刚开始使用原生 iOS 背景的 Flutter,所以我有一个关于 Dart beta null safety 的快速问题。

所以在 Swift 中,因为他们从一开始就有空安全的想法,就像 Kotlin 一样,所以我非常喜欢这门语言的两个特性是 if letguard let.这 2 个使处理可选值变得容易得多。我不确定 Dart 的测试版是否有类似的东西。

谢谢

检查 Dart 中的空安全性:

value ?? 0

我不是 Swift 方面的专家,但 Dart 将使用 null 检查来自动提升类型,我认为这主要完成了 if letguard let 的工作。

例如:

String? x = possiblyReturnsNull();
if (x != null) {
  // All code within this block treats `x` as non-nullable.
}
// All code outside the block continues to treat `x` as nullable.

注意 , so for those you would need to explicitly introduce a local reference. (There is a language proposal 以提供一种机制,以允许更好的机制添加本地引用而不污染外部范围。)

我要加入这个,因为我也来自 Swift 并且喜欢经常使用 guard。补充一下@jamesdlin 所说的,反之亦然。

所以你可以在功能上做一个 Swift 保护语句:

String? x = possiblyReturnsNull();
if (x == null) return whatever; // This works like Swift's guard
// All code outside the block now treats `x` as NON-nullable.

对已接受答案的一个小扩展是 Flutter 还允许强制解包一个 Optional。因此,如果您正在访问未保存在变量中的非零值,例如在字典中,您需要将其解包在 if 语句中:

if (someDict[someKey] != null) {
  print(someDict[someKey]!)
}
//