Open azliR opened 11 months ago
Interesting idea! Not quite general enough for my taste though.
Your proposed or
is not general, because some developers want it to work for empty strings, some for blank strings, some for blank strings and dashes "-", .... There are too many ways to get it right.
Let me show you an alternative
In Dart, you can use the ??
operator for a fallback for nullable types. This is commonly known and you'd use it too here if it would also work for an empty string.
What we can do is convert all empty strings to null
and then use the ??
operator.
someNullOrEmptyStr.emptyAsNull() ?? 'not null or empty string';
This would also work for any other concept of "emptyness" that should be replaced with a placeholder and can be chained
someNullOrEmptyStr.blankAsNull().emptyAsNull().dashAsNull() ?? 'not null or empty string';
Another benefit of ??
is that it works lazyly. If the fallback is not required, the function is not called.
"".emptyAsNull() ?? expensiveFunction(); // expensiveFunction is not called
"".or(expensiveFunction()) // expensiveFunction is called but not used
Oh wow that's even better! Thanks for the correction!
I often come across cases where I have this code:
I feel like that should be more simplified for example adding
or
extension or something, like:Thanks in advance, your package is so helpful!