अब तक जाएं .. my FAVORITE "ObjC Add-On" is ObjectMatcher
objswitch(someObject)
objcase(@"one") { // Nesting works.
objswitch(@"b")
objcase(@"a") printf("one/a");
objcase(@"b") printf("one/b");
endswitch // Any code can go here, including break/continue/return.
}
objcase(@"two") printf("It's TWO."); // Can omit braces.
objcase(@"three", // Can have multiple values in one case.
nil, // nil can be a "case" value.
[self self], // "Case" values don't have to be constants.
@"tres", @"trois") { printf("It's a THREE."); }
defaultcase printf("None of the above."); // Optional default must be at end.
endswitch
और यह गैर तार के साथ काम करता है, भी ... छोरों में, यहां तक कि!
for (id ifNumericWhatIsIt in @[@99, @0, @"shnitzel"])
objswitch(ifNumericWhatIsIt)
objkind(NSNumber) printf("It's a NUMBER.... ");
objswitch([ifNumericWhatIsIt stringValue])
objcase(@"3") printf("It's THREE.\n");
objcase(@"99") printf("It's NINETY-NINE.\n");
defaultcase printf("some other Number.\n");
endswitch
defaultcase printf("It's something else entirely.\n");
endswitch
It's a NUMBER.... It's NINETY-NINE.
It's a NUMBER.... some other Number.
It's something else entirely.
सबसे अच्छी बात यह है कि वहाँ बहुत कुछ {...}
की, :
के हैं, और ()
के
स्रोत
2013-10-25 15:56:00
नहीं, केवल पूर्णांक/bool/चार/आदि प्रकार पर काम करता है स्विच। – chown
यह प्रश्न कुछ हद तक पहले ही पोस्ट किया गया है (http: // stackoverflow।कॉम/प्रश्न/816131 9/अत्यधिक-प्रदर्शन-उद्देश्य-सी-विकल्प-टू-द-स्विच-स्टेटमेंट-ऑब्जेक्ट्स) –
ऐसा करने के कई वैकल्पिक तरीके हैं। उदाहरण के लिए, मानों के साथ एक सरणी लोड करें और सरणी में एक मैच की खोज करें। कोई भी बहुत कुशल नहीं है, लेकिन वे कोड डुप्लिकेशन को कम करते हैं। –