Equivalent of if let and guard let of Swift in Dart
Solution 1
I'm not an expert on Swift, but Dart will use null checks to automatically promote types, and I think that mostly does the job of if let
and guard let
.
For example:
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.
Note that promotion won't be performed on non-local variables, so for those you would need to explicitly introduce a local reference. (There is a language proposal to provide a mechanism to allow a nicer mechanism to add a local reference without polluting the outer scope.)
Solution 2
I'm going to jump in on this, since I'm coming from Swift too and love to use guard a lot. Adding to what @jamesdlin said, the opposite is also true.
So you can functionally do a Swift guard statement:
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.
Son Nguyen
Updated on December 27, 2022Comments
-
Son Nguyen over 1 year
Just started Flutter with native iOS background, so I just have a quick question about Dart beta null safety.
So in Swift, because they have the idea of null safety from the beginning just like Kotlin, there are 2 features that I really like about the language is
if let
andguard let
. These 2 make working with optional values so much easier. I'm not sure if the beta version of Dart has anything like that.Thanks