C开启NSString?
有没有更聪明的方法来重写?
if ([cardName isEqualToString:@"Six"]) {
[self setValue:6];
} else if ([cardName isEqualToString:@"Seven"]) {
[self setValue:7];
} else if ([cardName isEqualToString:@"Eight"]) {
[self setValue:8];
} else if ([cardName isEqualToString:@"Nine"]) {
[self setValue:9];
}
不幸的是,他们不能。 这是开关语句最好且最受追捧的应用之一,所以希望他们能够跳上Java(和其他)的流行!
如果你正在做卡片名称,可能为每个卡片对象分配一个整数值并打开它。 或者可能是一个枚举,它被认为是一个数字,因此可以被切换。
例如
typedef enum{
Ace, Two, Three, Four, Five ... Jack, Queen, King
} CardType;
完成这种方式,Ace将等于情况0,两个作为情况1等。
你可以设置一个块的字典,如下所示:
NSString *lookup = @"Hearts"; // The value you want to switch on
typedef void (^CaseBlock)();
// Squint and this looks like a proper switch!
NSDictionary *d = @{
@"Diamonds":
^{
NSLog(@"Riches!");
},
@"Hearts":
^{
self.hearts++;
NSLog(@"Hearts!");
},
@"Clubs":
^{
NSLog(@"Late night coding > late night dancing");
},
@"Spades":
^{
NSLog(@"I'm digging it");
}
};
((CaseBlock)d[lookup])(); // invoke the correct block of code
要有“默认”部分,请将最后一行替换为:
CaseBlock c = d[lookup];
if (c) c(); else { NSLog(@"Joker"); }
希望苹果会教授“转换”一些新的技巧。
对我来说,一个简单的方法:
NSString *theString = @"item3"; // The one we want to switch on
NSArray *items = @[@"item1", @"item2", @"item3"];
int item = [items indexOfObject:theString];
switch (item) {
case 0:
// Item 1
break;
case 1:
// Item 2
break;
case 2:
// Item 3
break;
default:
break;
}
链接地址: http://www.djcxy.com/p/84273.html
下一篇: How to run node.js in my web site server not my pc local server