you are viewing a single comment's thread
view the rest of the comments
[–] 3 points 2 years ago* (last edited 2 years ago) (1 child)

Yeah, I've always hated Python's ternary, and I use it every day at work. Though you can do the same in Python if you want:

x = [condition] and [true value] or [false value]

I consider that bad style because the dedicated syntax is preferred. You can also do similar in JS:

x = [condition] && [true value] || [false value]

The caveat in both (and Lua) is that you'll get the false value if the true value is falsey.

My favorite syntax is Rust:

x = if [condition] { [true value] } else { [false value] };

This preserves the flow you get with the ? :, allows [true value] to be falsey, and is idiomatic without having a lot of extra syntax.

My favorite thing about Lua is that tables separate numeric from string keys, so you can do this:

x = { metadata = ... }
x[1] = 3
x[2] = 4
print(#x) -- prints 2

This is really nice for representing something like an XML/HTML DOM, where numeric indices are child nodes, and string keys are attributes. Or you can store metadata about a list in the list itself (e.g. have a reference to the max value, min value, etc). It's just really nice to work with.

  • source
  • parent
  • hideshow 2 child comments