これを書いた方がいいと思ったけど、覚えていない。
これをLuaで書く方がいいですか?これはどのように短く書くのですか?
if curSwitch == "shapes" then
curSwitch = "colors"
elseif curSwitch == "colors" then
curSwitch = "shapes"
end
これを書いた方がいいと思ったけど、覚えていない。
これをLuaで書く方がいいですか?これはどのように短く書くのですか?
if curSwitch == "shapes" then
curSwitch = "colors"
elseif curSwitch == "colors" then
curSwitch = "shapes"
end
作品:あなたがテーブルを使用して、このような簡単なスイッチを実装することができます
curSwitch = (curSwitch =="shapes") and "colors" or "shapes"
注:私はLua
を知らない。
通常、トリガーの場合は、XOR
操作を使用します。あなたはそれがB
を反転します1 XOR B
を計算する際に、(0
または1
)を持っているものは何でもB
のように、。
1 XOR 1 = 0; 1 XOR 0 = 1
。
おそらくinteger
(理想的には、bit
)とstring
でmap
を作成することができ、そこ{0:"shapes"; 1:"colors"}
を配置し、数で動作します。
それとも、あなただけのcurSwitch
ためtrue/false
を使用することができ、それは、この(三元OP)のようになります:
curSwitch ? "shapes" : "colors"
しかし、あなたはそのどこでも繰り返している場合、それはその空想ではありません。
幸運を祈る! :)のみ可能2つの値ならば
が。
switch = { shapes = "colors", colors = "shapes" }
curSwitch = "colors"
curSwitch = switch[curSwitch]
print(curSwitch) -- "shapes"
問題は、値がテーブルに存在しない場合は、単にnil
を得るということです。
curSwitch = "garbage"
curSwitch = switch[curSwitch]
print(curSwitch) -- nil
これは、存在しないキーの場合にエラーをトリガ過負荷__index
メタメソッドによって改善することができます。
m = {
__index = function(t,k)
local v = rawget(t,k) or error("No such switch!")
return v
end
}
setmetatable(switch, m)
curSwitch = "garbage"
curSwitch = switch[curSwitch]
print(curSwitch) -- error!
これはどうですか。そして
oldSwitch = "colors"
curSwitch = "shapes"
curSwitch, oldSwitch = oldSwitch, curSwitch
'curSwitch =でスイッチを反転({形状= "色"、カラー= "形状"})[curSwitch]またはcurSwitch'と スタート –