• lime!@feddit.nu
    link
    fedilink
    English
    arrow-up
    1
    ·
    edit-2
    1 day ago

    luas operators are all text in order to be readable. more symbols makes code less readable.

    if you want a one line operation that gives a default result, use or: a = b or c is equivalent to if b then a = b else a = c end.

    • KubeRoot@discuss.tchncs.de
      link
      fedilink
      English
      arrow-up
      2
      ·
      9 hours ago

      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.

      • lime!@feddit.nu
        link
        fedilink
        English
        arrow-up
        1
        ·
        8 hours ago

        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.

    • infinitesunrise@slrpnk.net
      link
      fedilink
      English
      arrow-up
      2
      ·
      edit-2
      1 day ago

      OK true, technically speaking it is indeed more readable, I guess I really meant that it takes far longer to read. I do admire Lua’s barebones simplicity. Thank you for the “or” tip, I’ve used it a few times before but I often forget about it.

      • lime!@feddit.nu
        link
        fedilink
        English
        arrow-up
        1
        ·
        17 hours ago

        always remember that code is read more than it is written. complex lines need to be deciphered, simple lines don’t. especially fun with symbols that have nonlocal effects like rusts ?.