Lua'da satır içi koşulların kullanılması zaten var mı?Lua'daki satır içi koşullar (a == b? "Yes": "no")?
Mesela:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Lua'da satır içi koşulların kullanılması zaten var mı?Lua'daki satır içi koşullar (a == b? "Yes": "no")?
Mesela:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Sure: tabii
function ternary (cond , T , F)
if cond then return T else return F end
end
print("blah: " .. ternary(a == true ,"blah" ,"nahblah"))
: a and t or f
sizin için işe yaramazsa, her zaman sadece bir fonksiyon oluşturabilir
print("blah: " .. (a and "blah" or "nahblah"))
, o zaman geri çekilip T ve F her zaman değerlendirilir .... o etrafında olsun ou sizin üçlü işlevine işlevleri sağlamak gerekir ve bu hantal alabilirsiniz:
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))
Bence boolean değişkenleri için en yararlı olanı budur – Vyacheslav
Bu cevap aslında en iyi yanıttan daha iyi çünkü boole de çalışıyor. –
birlikte sorun açıklama ve birkaç çözümlerle, üçlü operatör hakkında lua-users wiki güzel bir makale vardır. Yanıt için
+1. Ancak bunun kesinlikle doğru olduğunu sanmıyorum - LUA kullanmıyorum - ama bence bu yaklaşımla diğer dillerde üçüz bir operatör üzerinde bir "kusur" paylaşıyor. Düşünün: '(cond ve false-value ya da x)' Bu, her durumda x' ile sonuçlanacaktır. –
aynı zamanda A'nın değerini de basmaz mı? – corsiKa
@glowcoder No. "Bağımlı işleç (ve), bu değer false veya nil ise, ilk argümanını döndürür, aksi takdirde ikinci argümanını döndürür.Yıkama operatörü (veya), bu değer nil'den farklıysa ilk argümanını döndürür ve yanlış, aksi takdirde, veya ikinci argümanını döndürür.Kısa ve/veya kısa yol değerlendirme kullanın, yani, ikinci işlenen sadece gerekli ise değerlendirilir - - http://www.lua.org/manual/5.0/manual .html –