我正在关注一些教程,并且有一行我不太明白的代码:
- (NSString *)rankAsString
{
return @[@"?",@"A",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"D",@"K"][self.rank];
}
返回什么?谢谢!
我正在关注一些教程,并且有一行我不太明白的代码:
- (NSString *)rankAsString
{
return @[@"?",@"A",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"D",@"K"][self.rank];
}
返回什么?谢谢!
这也称为查找表,在这种情况下可以用来代替 switch/case 或 if/else。
也就是说,代码创建一个 NSArray(NSString)用作查找,然后在指定的序数位置检索字符串 - 例如,Ace(“A”)是排名 1,而 King(“K”)是排名13.
考虑代码是否写成:
NSArray* array = @[@"?", @"A", ..., @"K"];
return array[self.rank];
这里可以看出数组是一个单独的表达式。@[..]
和@".."
形式在OBJECTIVE-C LITERALSarray[..]
的Clang 文档中有所介绍;该语法可用于 Apple LLVM Compiler 4。