Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 什么是;return@[blah,blah][self.foo]";什么意思?_Objective C_Arrays - Fatal编程技术网

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

Objective c 什么是;return@[blah,blah][self.foo]";什么意思?,objective-c,arrays,Objective C,Arrays,我正在学习一些教程,其中有一行代码我并不真正理解: - (NSString *)rankAsString { return @[@"?",@"A",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9",@"10",@"J",@"D",@"K"][self.rank]; } 归还什么?谢谢 这也被称为a,可用于在此类情况下代替开关/外壳或if/else 也就是说,代码创建一个NSArray(NSString的)用作查找,然后在指定的顺序位置检索字符串-例如,Ace(“a

我正在学习一些教程,其中有一行代码我并不真正理解:

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

这也被称为a,可用于在此类情况下代替开关/外壳或if/else

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

考虑代码是否编写为:

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

这里可以看到数组是一个单独的表达式。
@[…]
@.“
数组[…]
表格包含在;该语法可以在Apple LLVM编译器4中使用。

为什么投票失败,代码比问题更糟糕!可以用两行写得更清楚,第一行创建一个
NSArray
,第二行索引到数组中。你在哪里找到的?这很糟糕,但你不应该因为不知道这一点而被否决。请注意,这会在每次调用该方法时重新创建查找表。那太浪费了,因为桌子不换。一个合适的解决方案是定义一个
静态NSArray*数组变量,然后使用初始化数组。@user2864740:由文字创建的数组没有什么特殊之处。它们的所有权和内存管理特性与使用
+[NSArray arraywhithobjects://创建的阵列相同。
@user2864740:我不确定您的意思。数组文字只是
+[NSArray arrayWithObjects:count::][/code>的语法糖。