कोड की इस लाइन का क्या अर्थ है?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
?
और :
मुझे भ्रमित।
variable ?: anotherVariable
, इसका क्या मतलब है? '
(valOrVar != 0) ? valOrVar : anotherValorvar
कोड की इस लाइन का क्या अर्थ है?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
?
और :
मुझे भ्रमित।
variable ?: anotherVariable
, इसका क्या मतलब है? '
(valOrVar != 0) ? valOrVar : anotherValorvar
जवाबों:
यह C टेनेरी ऑपरेटर है (ऑब्जेक्टिव-सी C का सुपरसेट है):
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
शब्दार्थ के बराबर है
if(inPseudoEditMode) {
label.frame = kLabelIndentedRect;
} else {
label.frame = kLabelRect;
}
पहले तत्व (जैसे variable ?: anotherVariable
) के साथ त्रिगुट का अर्थ उसी के समान है(valOrVar != 0) ? valOrVar : anotherValOrVar
?:
) के बिना टर्नरी ऑपरेटर उन स्थितियों में भी बेहतर है जिसमें बाईं ओर एक अभिव्यक्ति है, क्योंकि ?:
इसे एक से अधिक बार मूल्यांकन करने से रोकता है। उदाहरण के लिए: दो बार [myArray firstObject] ? [myArray firstObject] : @"Hello World";
कॉल firstObject
(यदि firstObject
नहीं लौटाता है nil
), जहां [myArray firstObject] ?: @"Hello World";
समान परिणाम उत्पन्न करता है लेकिन कभी firstObject
भी एक से अधिक बार कॉल नहीं करता है ।
?:
भी कहा जाता है । और निश्चित रूप से इस मामले में जैसे हम एक तत्व को छोड़ रहे हैं, यह अब एक टर्नरी ऑपरेटर नहीं बल्कि एक बाइनरी ऑपरेटर है । द्विआधारी ऑपरेटरों ऑपरेटरों हम आम तौर पर (जब प्रोग्रामिंग का उपयोग के विशाल बहुमत शामिल , , , , , , , , आदि)। *
+
-
^
|
||
&
>>
बैरी वार्क की उत्कृष्ट व्याख्या पर निर्माण ...
टर्नेरी ऑपरेटर के बारे में इतना महत्वपूर्ण है कि इसका उपयोग उन स्थानों में किया जा सकता है जो एक और नहीं कर सकते। यानी: एक शर्त या विधि पैरामीटर के अंदर।
[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]
... जो पूर्वप्रक्रमक स्थिरांक के लिए एक महान उपयोग है:
// in your pch file...
#define statusString (statusBool ? @"Approved" : @"Rejected")
// in your m file...
[NSString stringWithFormat: @"Status: %@", statusString]
यह आपको इफ-पैटर्न में स्थानीय चर का उपयोग करने और जारी करने से बचाता है। FTW!
यह सिर्फ सामान्य टर्नरी ऑपरेटर है । यदि प्रश्न चिह्न के पहले वाला भाग सत्य है, तो यह बृहदान्त्र से पहले के भाग का मूल्यांकन करता है और वापस करता है, अन्यथा यह बृहदान्त्र के बाद के भाग का मूल्यांकन और रिटर्न करता है।
a?b:c
के समान ही
if(a)
b;
else
c;
यह C का हिस्सा है, इसलिए यह Objective-C विशिष्ट नहीं है। यहाँ एक if
कथन में अनुवाद है :
if (inPseudoEditMode)
label.frame = kLabelIndentedRec;
else
label.frame = kLabelRect;
यह इफ़-तत्कालीन कथन लिखने का एक संक्षिप्त रूप है। इसका मतलब निम्नलिखित कोड के समान है:
if(inPseudoEditMode)
label.frame = kLabelIndentedRect;
else
label.frame = kLabelRect;
टेनेरी ऑपरेटर उदाहरण। यदि इस प्रकार के बूलियन चर का मूल्य हां है, तो "GENDER IS FEMALE" को प्रिंट करें अन्यथा "GENDER IS MALE"
? means = execute the codes before the : if the condition is true.
: means = execute the codes after the : if the condition is false.
उद्देश्य सी
BOOL isFemale = YES; NSString *valueToPrint = (isFemale == YES) ? @"GENDER IS FEMALE" : @"GENDER IS MALE"; NSLog(valueToPrint); //Result will be "GENDER IS FEMALE" because the value of isFemale was set to YES.
स्विफ्ट के लिए
let isFemale = false let valueToPrint:String = (isFemale == true) ? "GENDER IS FEMALE" : "GENDER IS MALE" print(valueToPrint) //Result will be "GENDER IS MALE" because the isFemale value was set to false.
मजेदार तथ्य, ऑब्जेक्टिव-सी में यदि आप अशक्त / शून्य जाँचना चाहते हैं उदाहरण के लिए:
-(NSString*) getSomeStringSafeCheck
{
NSString *string = [self getSomeString];
if(string != nil){
return String;
}
return @"";
}
इसे करने का त्वरित तरीका है:
-(NSString*) getSomeStringSafeCheck
{
return [self getSomeString] != nil ? [self getSomeString] : @"";
}
फिर आप इसे सबसे सरल तरीके से अपडेट कर सकते हैं:
-(NSString*) getSomeStringSafeCheck
{
return [self getSomeString]?: @"";
}
क्योंकि उद्देश्य-सी में:
तो चलिए आपको लिखते हैं:
[self getSomeString] != nil?: @"";
दूसरा पैरामीटर बूलियन मान लौटा रहा है, इस प्रकार एक अपवाद फेंक दिया गया है।
यह ternary ऑपरेटर है, जैसे कि if / else स्टेटमेंट।
if(a > b) {
what to do;
}
else {
what to do;
}
टर्नरी ऑपरेटर में यह इस प्रकार है: स्थिति? अगर हालत सही है तो क्या करें: झूठे होने पर क्या करें;
(a > b) ? what to do if true : what to do if false;
मैंने टर्नरी ऑपरेटर के बारे में कुछ नया सीखा है। लघु रूप जो मध्य ऑपरेंड को छोड़ देता है वह वास्तव में सुरुचिपूर्ण है, और कई कारणों में से एक है जो सी प्रासंगिक है। FYI करें, मुझे पहली बार C # में लागू एक रूटीन के संदर्भ में इसके चारों ओर वास्तव में अपना सिर मिला, जो टर्नरी ऑपरेटर का भी समर्थन करता है। चूंकि टर्नरी ऑपरेटर सी में है, यह इस कारण से खड़ा है कि यह अन्य भाषाओं में होगा जो अनिवार्य रूप से एक्सटेंशन हैं (जैसे, ऑब्जेक्टिव-सी, सी #)।
जैसा कि सभी ने कहा कि, यह सशर्त ऑपरेटर का प्रतिनिधित्व करने का एक तरीका है
if (condition){
true
}
else {
false
}
ternary ऑपरेटर का उपयोग करना (condition)? true:false
अतिरिक्त जानकारी जोड़ने के लिए, तेजी से हमारे पास इसका उपयोग करने का नया तरीका है ??
।
let imageObject: UIImage = (UIImage(named: "ImageName")) ?? (initialOfUsername.capitalizedString).imageFromString
जो के समान है
int a = 6, c= 5;
if (a > c)
{
a is greater
} else {
c is greater
}
के बराबर है
if (a>c)?a:c
==> के बराबर है if (a>c)?:c
इसके बजाय ?:
हम उपयोग कर सकते हैं ??
तेजी से है।