objective-c - "return @[blah, blah] [self.foo]"是什么意思?

标签 objective-c arrays

我正在学习一些教程,但有一行代码我不太理解:

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

返回了什么?谢谢!

最佳答案

这也称为 Lookup Table并且可以在这种情况下代替 switch/case 或 if/else。

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

考虑一下代码是否写成了:

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

这里可以看出数组是一个单独的表达式。 @[..]@".."array[..] 形式包含在Clang documentation on OBJECTIVE-C LITERALS 中。 ;该语法可以在 Apple LLVM Compiler 4 中使用。

关于objective-c - "return @[blah, blah] [self.foo]"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19942452/

相关文章:

ios - NSMutableString 保留/复制是相同的(复制不起作用?)

ios - MFSideMenu 如何在另一个 ViewController 中加载

objective-c - 如何检测 Mac 触控板上的四指点击?

ios - 如何在 objective-c 中解析数组 JSON

objective-c - 需要 NSIndexPath 方面的帮助

javascript - Array.from(Object) 和 [...Object] 有什么区别?

arrays - 如何对整数和字符串数组进行排序?

java - java中如何更改字符数组中的字符

javascript - 比较两个字符串数组 Javascript 的最快/最有效的方法

C 最小函数总是返回 2686916