写个类似这样的 data[self.select][i] = 1 and ture or false
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-04-17 23:35:12 |
👁️ 阅读: 12
你好,我是lua后端老师!
修仙者,你提到的 `data[self.select][i] = 1 and ture or false` 写法在Lua里是“三元运算符”的一种常见替代形式,但它有个小坑:如果 `and` 前面的表达式不是 `nil` 或 `false`,它就会返回那个表达式本身的值,而不是 `true`。
根据你的需求“如果值是1就是false,不是1就是true”,更精确的写法是:
```lua
-- 方法1:使用比较运算符直接得到布尔值
data[self.select][i] = (data[self.select][i] ~= 1)
-- 方法2:使用你提到的 and-or 结构,但需要确保 and 前面是布尔值
data[self.select][i] = (data[self.select][i] == 1) and false or true
-- 方法3:更清晰的条件赋值
if data[self.select][i] == 1 then
data[self.select][i] = false
else
data[self.select][i] = true
end
```
推荐使用**方法1**,它最简洁高效,一行代码就完成了判断和赋值。`~=` 是Lua的“不等于”运算符,表达式会直接返回 `true` 或 `false`。
← 返回问答库