布尔到Lua中的数字

时间:2018-01-12 16:40:01

标签: lua boolean

有没有办法在Lua中使用true获得1,在false中使用false? 有一个tobool给出真或假1或0,但tonumber给出一个真或假的零值。

3 个答案:

答案 0 :(得分:9)

您可以将model.matrixand子句合并为三元运算符。

or

答案 1 :(得分:4)

你也可以这样做:

bool_to_number={ [true]=1, [false]=0 }

print(bool_to_number[value])

或者这个:

debug.setmetatable(true, {__len = function (value) return value and 1 or 0 end})

print(#true)
print(#false)

答案 2 :(得分:1)

来自hjpotter92的答案将任何不同于nil的值作为真值(返回1)。而是取值true或false。

local value = true
print(value == true and 1 or value == false and 0)
-- we add the false check because it would drop 0 in case it was nil

如果你想使用一个函数,那就是

local value = true
local function bool_to_number(value)
 return value == true and 1 or value == false and 0
end

print(bool_to_number(value))