टर्नरी (सशर्त) ऑपरेटर एक मूल्य देता है। यदि आपकी विधियां नहीं हैं, तो उन्हें ऑपरेटर के हिस्सों के रूप में उपयोग नहीं किया जा सकता है (जहां यह मान लेता है)।
इसे बेहतर समझने के लिए, आइए एक साधारण बाइनरी ऑपरेटर के बारे में सोचें: +
। यह इस तरह से काम करता है:
<eval1> + <eval2> --> <value>
इसे 2 मूल्यांकन योग्य भागों की आवश्यकता है, और दूसरा लौटाता है। आपके द्वारा लिखे गए हैं
doThis() + doThat();
या यहाँ तक कि
gimmeAValue = doThis() + doThat();
यह विफल हो जाएगा, न तो doThis()
है और न ही doThat()
कुछ भी करने के लिए मूल्यांकन के रूप में (वे "वापसी" void
)। बेशक, <eval1>
और <eval2>
दोनों +
ऑपरेटर उन्हें संभाल सकते हैं और कुछ प्रकार के मान को वापस कर सकते हैं, तो कुछ "संगत" प्रकार का होना चाहिए।
अब त्रिगुट ऑपरेटर देखते हैं:
<evalBoolean> ? <eval1> : <eval2> --> <value>
यह 3 मूल्यांकित भागों लेता है, और एक मान देता है।
पहले मूल्यांकन योग्य भाग को बुलियन के रूप में संकलक द्वारा समझा जा सकता है (जा सकता है)। इसका उपयोग यह तय करने के लिए किया जाएगा कि अन्य 2 मूल्यांकन योग्य हिस्सों को किस प्रकार वापस किया जाना है।
अन्य दो मूल्यांकन योग्य भागों, अच्छी तरह से ... मूल्यांकन योग्य होना चाहिए। किसी चीज़ के लिए। कुछ प्रकार का
दूसरे शब्दों में: टर्नरी सशर्त ऑपरेटर का उद्देश्य कोड को ब्रांचिंग के रूप में कुछ नहीं करना है। इस तरह से प्रयुक्त:
gimmeAValue = testMe() ? returnThis() : returnThat();
स्रोत
2012-09-23 22:07:23
नहीं, ऐसा नहीं। बस एक सामान्य व्यक्ति की तरह 'if' का उपयोग करें। –
मेरा मानना है कि टर्नरी ऑपरेटर को एक शर्त के साथ एक प्रकार के उदाहरण के लिए मान असाइन करना होता है। जिस तरह से आप इसे सुझाव दे रहे हैं वह प्रारूप को संतुष्ट नहीं कर रहा है। –
@codesparkle - बहुत सी जगह नहीं। यदि (शर्त) {doThis();} else {doThat();} – tehdoommarine