Lua: 来自元表 returns 的表达式 nil 而不是 false

Lua: Expression from metatable returns nil instead of false

我有一个元表设置如下例:

    setmetatable(self, {
    __index = function(_,k)
        return Class[k] and Class[k](self, ref) or ref[k]
    end
})

我的函数:

function Class:isDriving(person)
   return (person.onRoad and person.inCar) or false
end

总而言之,它允许我做这样的事情:

print(driver.isDriving)

现在一切正常,当表达式为真时,它 returns 一个布尔值 true。 我遇到的唯一问题是表达式 returns nil 为假时,而不仅仅是布尔值 false.

--I tried this too, but also returns nil
return (person.onRoad and person.inCar) or (nil and false)

我该如何解决这个问题?

问题是Class[k](self, ref)可能returnfalse
重写

return Class[k] and Class[k](self, ref) or ref[k]

作为

if Class[k] then
   return Class[k](self, ref)
else
   return ref[k]
end