2011-03-29 9 views
23

क्या उद्देश्य-सी कोड की इस पंक्ति को लिखने का एक छोटा सा तरीका है?क्या उद्देश्य-सी कोड की इस पंक्ति को लिखने का एक छोटा सा तरीका है?

a = b ? b : c; 

कहने का एक तरीका है कि, एक लंबे समय के रूप में यह नहीं के बराबर है, और ग नहीं है ख के बराबर है। यही है, रूबी के ऑपरेटर की तरह कुछ भी है "|| ="

+2

उद्देश्य-सी में जहां तक ​​मुझे पता है, एक शून्य-सहकारी ऑपरेटर नहीं है। – BoltClock

+1

मैं जितना ज्यादा उत्सुक हूं - हालांकि पठनीयता के लिए यह अभी भी एक लाइन के लिए इसके लायक होगा: self.nameTextField.text = (self.weConfig.title)? self.weConfig.title: @ ""; – Greg

उत्तर

76

निम्नलिखित काम करता है आप के लिए:

a = b ? : c; 

(इस वाक्य रचना, सी के लिए एक जीएनयू विस्तार है, ताकि आप और जीसीसी उपयोग करने के लिए नहीं हो सकता LLVM - http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Conditionals.html#Conditionals)।

+7

मैंने एक्सकोड 3 पर एलएलवीएम 1.7 के साथ इसका परीक्षण किया और यह काम करता है। – BoltClock

+0

हां ऐसा लगता है - बहुत अच्छा – Greg

+1

अद्भुत :-) मिस्ड नल-कोलेसिंग सी # से वापस आ रहा है। '?:' चाल बहुत अच्छी तरह से करता है। –

2

उतना ही छोटा है जितना आप इसे उद्देश्य-सी में प्राप्त कर सकते हैं! यह आपके पास एक अच्छा छोटा परीक्षण है।

केवल अन्य लघु तरह से मैं के साथ आ सकता है इस प्रकार है (मैं पठनीयता कारणों के लिए यह सिफारिश करेंगे नहीं है और यह तुम्हारा के रूप में कम नहीं है!):

if (b) a = b; else a = c; 
संबंधित मुद्दे