像布尔值一样在两个字符串之间切换
Switching between two strings like booleans
我经常得到一些对象,这些对象有一个代表非布尔状态的 var,我想尽可能简单地切换它们。
function switch_state()
if foo == "abc" then
foo = "xyz"
else
foo = "abc"
end
end
我可以缩短存档时间吗?
任何类似于
foo = not foo
我的第一次尝试是
foo = (foo and not "abc") or "xyz"
但这当然不行=(
您可以使用 table 作为过渡图:
function switch_state()
local transit = { abc = "xyz", xyz = "abc" }
foo = transit[foo]
return foo
end
一种方法是这样做:
foo = (foo == "abc") and "xyz" or "abc"
另一种方法:
将 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
我经常得到一些对象,这些对象有一个代表非布尔状态的 var,我想尽可能简单地切换它们。
function switch_state()
if foo == "abc" then
foo = "xyz"
else
foo = "abc"
end
end
我可以缩短存档时间吗? 任何类似于
foo = not foo
我的第一次尝试是
foo = (foo and not "abc") or "xyz"
但这当然不行=(
您可以使用 table 作为过渡图:
function switch_state()
local transit = { abc = "xyz", xyz = "abc" }
foo = transit[foo]
return foo
end
一种方法是这样做:
foo = (foo == "abc") and "xyz" or "abc"
另一种方法:
将 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