X = trunk.branch.leaf
If “leaf” is nil, “X” will be set to nil, but if “branch” or “trunk” is nil, this is an error “attempt to index a nil value”. Surely it would be architecturally more consistent (and practically more useful) if an attempt to index a nil value evaluated to nil?
From a recent piece of code I’ve written:
a = tb[p1]; if not a then return end
a = a[p2]; if not a then return end
a = a[p3]; if not a then return end
a = a[p4]; if not a then return end
It would have been neat to be able just to write:
a = tb[p1][p2][p3][p4]
if not a then return end
- John Hind
Attachment:
smime.p7s
Description: S/MIME cryptographic signature