4

我正在关注一些教程,并且有一行我不太明白的代码:

- (NSString *)rankAsString
{
return @[@"?",@"A",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"D",@"K"][self.rank];
}

返回什么?谢谢!

4

1 回答 1

6

这也称为查找表,在这种情况下可以用来代替 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。

于 2013-11-12T23:55:47.597 回答