如何设置bool变量同时为true和false,使指定Lua代码输出"true"?
实现指定Lua代码输出"true"的方案
实现核心逻辑是利用Lua的元表特性重载==运算符,让变量a在两次等值判断时返回不同的布尔结果,无需修改你原有嵌套判断的代码逻辑,完整可运行代码如下:
local toggle = true local a = setmetatable({}, { __eq = function(_, compare_val) local ret = toggle == compare_val toggle = not toggle return ret end }) -- 以下为你提供的原有代码,未做任何修改 if a==true then if a==false then print("true") else print("false") end elseif a==false then if a==true then print("true") else print("false") end end
原理解释
- 第一次执行
a==true判断时,元方法__eq触发,当前toggle值为true,和比较值true相等,返回true进入外层第一个if分支,同时toggle被翻转为false - 进入外层if分支后执行
a==false判断,元方法再次触发,当前toggle值为false,和比较值false相等,返回true进入内层if分支,执行print("true")得到预期结果
内容的提问来源于stack exchange,提问作者Voncre
相关产品推荐
相关产品推荐

