布尔到Lua中的数字

Hel*_*ion 9 lua boolean

在Lua中有一种方法可以获得1和true以及0吗?有一个tobool用1或0给出真或假,但是tonumber给出一个真或假的零值.

hjp*_*r92 11

您可以像三元运算符一样组合and和使用or子句.

function bool_to_number(value)
  return value and 1 or 0
end
Run Code Online (Sandbox Code Playgroud)


lhf*_*lhf 5

您也可以这样做:

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

print(bool_to_number[value])
Run Code Online (Sandbox Code Playgroud)

或这个:

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

print(#true)
print(#false)
Run Code Online (Sandbox Code Playgroud)

  • 为什么要这样 宁愿将此属性视为这些语言的怪癖。当然,您可以滥用此功能,但是我想它并不是要以任何语言进行的。如果需要,我的第一印象是您正在做某事,也许有更好的方法。 (4认同)
  • @EgorSkriptunoff有趣的是,我还没有这样看过。我可以看到您来自哪里,但我仍然不同意。3大于1,任何人都可以看到,这“很有意义”。如果您考虑类似字典顺序的排序,则也是'foo'>'bar'。但是我无法确定真假比假大。它不是。它也不小,要问的是错误的问题。而且:我从未对布尔进行过排序,而且我无法想象为什么要这样做。如果需要,我将为此编写一个比较函数。 (2认同)