If I want to protect a metatable with an opaque value, by setting its __metatable field to non-nil, which is the best value to use?
The value true seems reasonable.
if getmetatable(t) then -- this would pass
getmetatable(t)[k] = foo -- but then this would be bad
The value false also seems reasonable. It makes the above code OK, but means you'd have to explicitly check against nil to determine whether a metatable exists.
if getmetatable(t) ~= nil then -- this would pass
print(getmetatable(t)) -- this is OK
getmetatable(t)[k] = foo -- this is still bad
Anyways, I was just wondering if there is a reason to prefer one over the other. Or if another value is best. I don't care about debugging values or anything, so I don't need a string. Just opaque protection of the metatable.