2011-04-02 21 views

उत्तर

78

ज़रूर:

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

print("blah: " .. ternary(a == true ,"blah" ,"nahblah")) 
निश्चित रूप से

:

print("blah: " .. (a and "blah" or "nahblah")) 
+13

+1। हालांकि मुझे नहीं लगता कि यह सख्ती से सच है - मैं LUA का उपयोग नहीं करता - लेकिन मुझे लगता है कि यह अन्य भाषाओं में एक टर्नरी ऑपरेटर पर इस दृष्टिकोण के साथ "दोष" साझा करता है। कल्पना कीजिए: '(cond और false-value या x) 'इसका परिणाम सभी मामलों में' x' होगा। –

+1

यह भी ए के मूल्य को मुद्रित नहीं करेगा? – corsiKa

+7

@glowcoder सं। "संयोजन ऑपरेटर (और) अपना पहला तर्क देता है यदि यह मान गलत या शून्य है; अन्यथा, और अपना दूसरा तर्क देता है। संयोजन ऑपरेटर (या) अपना पहला तर्क देता है यदि यह मान शून्य से अलग है और झूठा; अन्यथा, या अपना दूसरा तर्क देता है। दोनों और और शॉर्ट-कट मूल्यांकन का उपयोग करते हैं, यानी, दूसरा ऑपरेंड केवल तभी मूल्यांकन किया जाता है जब - "http://www.lua.org/manual/5.0/manual से .html –

13

a and t or f आप के लिए काम नहीं करता है, तो आप हमेशा सिर्फ एक समारोह बना सकते हैं , तो आपके पास वापस आकर्षित किया गया है कि टी और एफ का हमेशा मूल्यांकन किया जाता है .... उस y के आसपास जाने के लिए कहां अपनी त्रिगुट कार्य करने के लिए कार्य करता है प्रदान करने की आवश्यकता है, और उस बोझल प्राप्त कर सकते हैं:

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)) 
+0

मुझे लगता है कि यह बूलियन चर के लिए सबसे उपयोगी है – Vyacheslav

+0

यह उत्तर वास्तव में शीर्ष उत्तर से बेहतर है क्योंकि यह बूलियन के लिए भी काम करता है। –

10

वहाँ, त्रिगुट ऑपरेटर के बारे में lua-users wiki पर एक अच्छी लेख है एक साथ समस्या विवरण और कई समाधान के साथ। उत्तर के लिए

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^