在两个字符串之间切换,如布尔值

时间:2015-02-18 12:55:11

标签: string lua boolean

我经常得到的对象有一个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"

但当然这不起作用=(

3 个答案:

答案 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