web-dev-qa-db-ja.com

Luaのインライン条件(a == b? "yes": "no")?

とにかくLuaでインライン条件を使用する方法はありますか?

といった:

print("blah: " .. (a == true ? "blah" : "nahblah"))
70
Softnux

確かに:

print("blah: " .. (a and "blah" or "nahblah"))
97
John Zwinck

a and t or fは機能しません。いつでも関数を作成できます。

function ternary ( cond , T , F )
    if cond then return T else return F end
end

print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))

もちろん、TとFは常に評価されるという欠点があります。..回避するには、関数を3項関数に提供する必要があり、扱いにくくなります。

function ternary ( cond , T , F , ...)
    if cond then return T(...) else return F(...) end
end

print("blah: " .. ternary(a == true ,function() return "blah" end ,function() return "nahblah" end))
22
daurnimator