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>的语法糖。