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
我有一个元表设置如下例:
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