कोड की इस पंक्ति का क्या अर्थ है?प्रश्न चिह्न और कोलन (?: टर्नरी ऑपरेटर) का उद्देश्य उद्देश्य-सी में क्या है?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
?
और :
मुझे भ्रमित।
कोड की इस पंक्ति का क्या अर्थ है?प्रश्न चिह्न और कोलन (?: टर्नरी ऑपरेटर) का उद्देश्य उद्देश्य-सी में क्या है?
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
?
और :
मुझे भ्रमित।
यह वह जगह है सी ternary operator (ऑब्जेक्टिव-सी सी के एक सुपरसेट है):
label.frame = (inPseudoEditMode) ? kLabelIndentedRect : kLabelRect;
शब्दार्थ
if(inPseudoEditMode) {
label.frame = kLabelIndentedRect;
} else {
label.frame = kLabelRect;
}
कोई पहला तत्व के साथ त्रिगुट के बराबर है (उदाहरण के लिए variable ?: anotherVariable
) का अर्थ है (valOrVar != 0) ? valOrVar : anotherValOrVar
(अद्यतन: यक! उत्तर के रूप में दोबारा पोस्ट करना।) टर्नरी ऑपरेटर के बारे में इतना महत्वपूर्ण क्या है कि इसका उपयोग उन स्थानों पर किया जा सकता है जो एक और नहीं कर सकते हैं। यानी: एक शर्त या विधि पैरामीटर के अंदर। [NSString stringWithFormat: @ "स्थिति:% @", (? StatusBool @ "स्वीकृत": @ "अस्वीकृत")] ... जो पूर्वप्रक्रमक स्थिरांक के लिए एक महान प्रयोग है: #define statusString (statusBool? @ "स्वीकृत": @ "अस्वीकृत") ... तो: [NSString stringWithFormat: @ "स्थिति:% @", statusString] इस का उपयोग करें और में स्थानीय चर को रिहा करने से बचाता है, तो-और कुछ पैटर्न। FTW! –
और इसकी इतनी एन ई ए टी! – Morkrom
शायद यह उल्लेख करने लायक है कि पहले तत्व ('?:') के बिना टर्नरी ऑपरेटर * ऐसी स्थिति में * बेहतर है * जिसमें बाएं तरफ एक अभिव्यक्ति है, क्योंकि '?:' इसे एक से अधिक बार मूल्यांकन करने से रोकती है। उदाहरण के लिए: '[myArray firstObject]? [myArray firstObject]: @ "हैलो वर्ल्ड"; 'कॉल' पहले ऑब्जेक्ट 'दो बार कॉल करें (यदि' firstObject' 'nil' वापस नहीं आता है), जहां '[myArray firstObject] है?: @ "हैलो वर्ल्ड"; 'समान परिणाम उत्पन्न करता है लेकिन कभी भी' firstObject' को एक से अधिक बार कॉल नहीं करता है। – nhgrif
यह सी का हिस्सा है, इसलिए यह उद्देश्य-सी विशिष्ट नहीं है। यहाँ एक if
बयान में एक अनुवाद है:
if (inPseudoEditMode)
label.frame = kLabelIndentedRec;
else
label.frame = kLabelRect;
यह सिर्फ एक अगर-तो-और कुछ बयान लेखन का एक संक्षिप्त रूप है। इसका मतलब निम्न कोड जैसा है:
if(inPseudoEditMode)
label.frame = kLabelIndentedRect;
else
label.frame = kLabelRect;
यह टर्नरी या सशर्त ऑपरेटर है। यह मूल रूप है:
condition ? valueIfTrue : valueIfFalse
जहां मूल्यों का मूल्यांकन किया जाएगा, तो उनका मूल्यांकन किया जाएगा।
इसे अधिक सरल, स्पष्ट और स्पष्ट वोट दिया जाना चाहिए था। – Celeritas
बस स्पष्ट करने के लिए, यह मानों तक ही सीमित नहीं है। शर्त? codeIfTrue: codeIfFalse' –
यह सामान्य सामान्य ternary operator है। यदि प्रश्न चिह्न से पहले का हिस्सा सत्य है, तो यह कॉलन से पहले हिस्सा का मूल्यांकन करता है और देता है, अन्यथा यह कॉलन के बाद भाग का मूल्यांकन करता है और देता है।
a?b:c
तरह
if(a)
b;
else
c;
बैरी Wark उत्तम स्पष्टीकरण पर भवन ... है
क्या त्रिगुट ऑपरेटर के बारे में इतना महत्वपूर्ण है कि यह स्थानों में इस्तेमाल किया जा सकता है कि एक अगर-बाकी नही सकता। यानी: एक शर्त या विधि पैरामीटर के अंदर।
[NSString stringWithFormat: @"Status: %@", (statusBool ? @"Approved" : @"Rejected")]
... जो पूर्वप्रक्रमक स्थिरांक के लिए एक महान प्रयोग है:
// in your pch file...
#define statusString (statusBool ? @"Approved" : @"Rejected")
// in your m file...
[NSString stringWithFormat: @"Status: %@", statusString]
यह आप का उपयोग और अगर-किसी और पैटर्न में स्थानीय चर जारी करने के लिए होने से बचाता है। FTW!
यह टर्नरी ऑपरेटर है, जैसे कि if/else कथन। हालत:
if(a > b) {
what to do;
}
else {
what to do;
}
त्रिगुट ऑपरेटर में ऐसा है?यदि स्थिति सच है तो क्या करें: यदि यह गलत है तो क्या करें;
(a > b) ? what to do if true : what to do if false;
मैं इस बात की सराहना करता हूं कि आप साइट पर योगदान करने का प्रयास कर रहे हैं, लेकिन उत्तर पोस्ट कर रहे हैं जो केवल दोहराए गए उत्तरों को दोहराते हैं, आम तौर पर निराश होते हैं, क्योंकि यह सिर्फ प्रश्नों को झुकाता है। –
int padding = ([[UIScreen mainScreen] bounds].size.height <= 480) ? 15 : 55;
मतलब है
int padding;
if ([[UIScreen mainScreen] bounds].size.height <= 480)
padding = 15;
else
padding = 55;
बस तर्क
(condition) ? (code for YES) : (code for NO)
सरल और सुरुचिपूर्ण – Barracuda
यह वास्तव में ** सर्वश्रेष्ठ ** उत्तर है क्योंकि अन्य उत्तरों का अर्थ यह है कि परिणामस्वरूप आप केवल "मूल्य" प्राप्त कर सकते हैं, जबकि इससे पता चलता है कि आप परिणामस्वरूप किसी भी मनमाना कोड डाल सकते हैं। –
मैं बस कुछ त्रिगुट ऑपरेटर के बारे में नया सीखा होगा। मध्य ऑपरेंड को छोड़ने वाला संक्षिप्त रूप वास्तव में सुरुचिपूर्ण है, और कई कारणों में से एक है कि सी प्रासंगिक बना हुआ है। एफवाईआई, मैंने पहली बार सी # में लागू एक नियमित रूप से संदर्भ के संदर्भ में अपना सिर प्राप्त किया, जो टर्नरी ऑपरेटर का भी समर्थन करता है। चूंकि टर्नरी ऑपरेटर सी में है, इसलिए इसका कारण यह है कि यह अन्य भाषाओं में होगा जो अनिवार्य रूप से इसके विस्तार (ई जी, ऑब्जेक्टिव-सी, सी #) हैं।
के रूप में हर किसी के लिए भेजा है कि, यह सशर्त ऑपरेटर का प्रतिनिधित्व
if (condition){
true
}
else {
false
}
त्रिगुट ऑपरेटर (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)?:c
?:
के बजाय हम उपयोग कर सकते हैं ??
तेज है के बराबर है
if (a>c)?a:c
के बराबर है।
टर्नरी ऑपरेटर उदाहरण।यदि isFemale बूलियन चर का मान हाँ, प्रिंट "लिंग महिला है" है अन्यथा
? 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?: @"";
दूसरा पैरामीटर एक बूलियन मान, इस प्रकार एक अपवाद फेंक दिया है लौटा रहा है।
ध्यान दें कि यह प्रश्न चिह्न होना चाहिए, उद्धरण चिह्न नहीं। – clahey
ओह, क्षमा करें आप सही हैं। – rdesign
कंपाइलर भी 'चर' की अनुमति देता है?: दूसरा वैरिएबल ', इसका क्या अर्थ है?' – Tony