什么“返回@ [blah,blah] [self.foo]”是什么意思?

时间:2013-11-12 23:52:36

标签: objective-c arrays

我正在学习一些教程,并且有一行我不太了解的代码:

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

返回什么?谢谢!

1 个答案:

答案 0 :(得分:6)

这也称为Lookup Table,可用于代替switch / case或if / else等情况。

也就是说,代码创建一个NSArray(NSString)用作查找,然后在指定的序号位置检索字符串 - 例如Ace(“A”)排名第1,King(“K”)排名第13位。

考虑代码是否写成:

NSArray* array = @[@"?", @"A", ..., @"K"];
return array[self.rank];

这里可以看出该数组是一个单独的表达式。 @[..]涵盖了@".."array[..]和{{1}}表单。语法可以在Apple LLVM编译器4中使用。