I’m learning swift and I actually just discovered ??
today. Am I missing out in other languages?
Yes, it’s very useful when applied correctly.
I’m always disappointed when I remember, that I can’t use such a feature, because I’m stuck using Java.
I enjoy this:
return a.or(b);
But yeah, that requires an Option
type rather than null
pointers…
Is that Rust? Assuming a
is an Option (which would be close approximation of OP’s nullable type) and assuming b is not null, then this would be closer to the original idea:
a.unwrap_or(b)
It returns value of a
if it’s not None rather than Option.
Ah, true. Thanks.
Theoretically, it was supposed to be pseudo-code, secretly inspired by Rust, but I did get that one mixed up.
And I am actually even a fan of the word unwrap
there, because it follows a schema and you can have your IDE auto-complete all the things you can do with an Option
.
In many of these other languages, you just get weird collections of symbols which you basically have to memorize and which only cover rather specific uses.
→ return a and a or b
return a or b
correction from @murtaza64
Ruby:
a || b
(no return
as last line is returned implicitly, no semicolon)
EDIT: As pointed out in the comments, this is not strictly equivalent, as it will return b
if a
is false
as well as if it’s nil
(these are the only two falsy values in Ruby).
Python:
return a or b
i like it because it reads like a sentence so it somewhat makes sense
and you can make it more comprehensive if you want to:
return a if a is not None else b
My coworker flips his shit every time I include a ternary operator in a PR. He also insists on refactoring any block of code longer than two lines into its own function, even when it’s only used once.
He is not well liked.