我经常得到的对象有一个var,表示一个不是boolans的状态,并希望尽可能简单地切换它们。
function switch_state()
if foo == "abc" then
foo = "xyz"
else
foo = "abc"
end
end
我可以将这个存档更短吗? 任何与
相似的东西foo = not foo
我的第一次尝试是
foo = (foo and not "abc") or "xyz"
但当然这不起作用=(
答案 0 :(得分:4)
您可以将表格用作转换地图:
function switch_state()
local transit = { abc = "xyz", xyz = "abc" }
foo = transit[foo]
return foo
end
答案 1 :(得分:4)
一种方法是这样做:
foo = (foo == "abc") and "xyz" or "abc"
答案 2 :(得分:2)
另一种方法:
将foo
存储为布尔值,并使用foo = not foo
切换。
当您需要字符串时使用foo and "abc" or "xyz"
function toggle_state()
foo = not foo
end
function state()
return foo and "abc" or "xyz"
end