this post was submitted on 12 Feb 2026
53 points (100.0% liked)

Programming

26088 readers
231 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] thingsiplay@lemmy.ml 1 points 1 month ago (2 children)

I assume they did that for performance reasons, because removing entries is slow probably? From user perspective, it would have made it more sense to remove the key instead defining it as nil and then expecting the user to handle the nil. The key does not stop existing, right? I don't program in Lua.

[–] SlurpingPus@lemmy.world 4 points 1 month ago (1 children)

Nil doesn't exist as a value in Lua, because a variable or a field that don't exist are indistinguishable from a nil value, since they all return nil when evaluating. In particular, this leads to the situation that you can't have a table where some of the fields are assigned nil as the value, because those fields effectively don't exist.

[–] thingsiplay@lemmy.ml 1 points 1 month ago (1 children)

Ah I see, that makes it clear. I guess it is a "good enough" solution where it doesn't matter in real world.

[–] SlurpingPus@lemmy.world 2 points 1 month ago

I'm guessing it's more of a stylistic choice. Lisps typically work the same way, except they can retrieve the full map structure even if some fields contain nil as the value.

Unfortunately, Lua's approach hinders exchanging structures with null values with other environments: see my comment here.

[–] lime@feddit.nu 1 points 1 month ago

the key does stop existing, insofar as referring to any name that is not defined in lua results in nil. which includes variables, since they are defined in a global table. i don't actually know what happens internally.