相当于 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 let
和 guard let
.这 2 个使处理可选值变得容易得多。我不确定 Dart 的测试版是否有类似的东西。
谢谢
检查 Dart 中的空安全性:
value ?? 0
我不是 Swift 方面的专家,但 Dart 将使用 null 检查来自动提升类型,我认为这主要完成了 if let
和 guard 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]!)
}
//
刚开始使用原生 iOS 背景的 Flutter,所以我有一个关于 Dart beta null safety 的快速问题。
所以在 Swift 中,因为他们从一开始就有空安全的想法,就像 Kotlin 一样,所以我非常喜欢这门语言的两个特性是 if let
和 guard let
.这 2 个使处理可选值变得容易得多。我不确定 Dart 的测试版是否有类似的东西。
谢谢
检查 Dart 中的空安全性:
value ?? 0
我不是 Swift 方面的专家,但 Dart 将使用 null 检查来自动提升类型,我认为这主要完成了 if let
和 guard 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.
注意
我要加入这个,因为我也来自 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]!)
}
//