The issue with Lua’s and/or in this context is that they don’t work if false or nil are valid values. In a and b or c, if b = false, the result is always c.
I also love null-related operators like ?? and ?. for this, since they explicitly check for null, letting you handle any non-null values for optional/default values. The syntax can get a bit cursed, like maybeNull?.maybeMethod?.(args) in JS, but I still prefer that to writing out multiple field accesses in an if condition… And arguably the code is only less readable if you aren’t acclimated to it.
All that said I do really appreciate Lua’s simplicity, as a language that provides tooling to create the features you want instead of building them into the language, though I wish it had some conventional regex instead of its own patterns.
i despise doing null checks as operators, because everyone does them differently. python’s a is not None is immediately obvious and you don’t have to think about chaining rules.
The issue with Lua’s and/or in this context is that they don’t work if false or nil are valid values. In
a and b or c
, ifb = false
, the result is alwaysc
.I also love null-related operators like ?? and ?. for this, since they explicitly check for null, letting you handle any non-null values for optional/default values. The syntax can get a bit cursed, like
maybeNull?.maybeMethod?.(args)
in JS, but I still prefer that to writing out multiple field accesses in an if condition… And arguably the code is only less readable if you aren’t acclimated to it.All that said I do really appreciate Lua’s simplicity, as a language that provides tooling to create the features you want instead of building them into the language, though I wish it had some conventional regex instead of its own patterns.
i despise doing null checks as operators, because everyone does them differently. python’s
a is not None
is immediately obvious and you don’t have to think about chaining rules.