如何在Lua中对布尔值进行排序/比较

时间:2018-07-30 14:39:08

标签: lua

如何在Lua中比较/排序布尔值?假定“标准”排序为true> false

local first = true
local second = false

first > second

stdin:1: attempt to compare two boolean values
stack traceback:
      stdin:1: in main chunk
      [C]: in ?

2 个答案:

答案 0 :(得分:1)

不能比较布尔值的顺序。

但是,如果您坚持尝试,请尝试以下操作:

debug.setmetatable(true,{
    __lt = function (x,y) return (not x) and y end
})

print("false < false", false < false)
print("false < true",  false < true)
print("true  < false", true  < false)
print("true  < true",  true  < true)

答案 1 :(得分:0)

由于两个操作数都是布尔值,因此可以使用标准布尔值技术:

(not first) and second  --  "first < second"
first and (not second)  --  "first > second"

示例:

my_table = {
  { name = "Max", strong = true },
  { name = "Ray", strong = false },
  { name = "Sam", strong = true }
}
table.sort(my_table, function(a, b)
  return a.strong and not b.strong
end)