嗨,我当然不明白这个代码CS193p
[[PlayingCard rankStrings][self.rank] stringByAppendingString:self.suit];
其中rankString是变量方法
+ (NSArray *)rankStrings
{
return @[@"?", @"A", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"J", @"Q", @"K"];
}
self.rank是一个随机数的吸气剂
@property (nonatomic) NSUInteger rank;
另一个变量方法和self.suit
+ (NSArray *)validSuits
{
return @[@"♥️", @"♦️", @"♠️", @"♣️"];
}
我在我的代码NSLog中插入以了解其功能....我明白它需要从rankStrings获得排名并将它们与诉讼联系起来....但我不明白如何!方法appendingString是明确的......但是如何从rankStrings获得值排名? [PlayingCard rankStrings]是对变量方法的简单调用,NSUInteger等级是一个getter
答案 0 :(得分:1)
您发布的第一行代码是以下内容的简写:
[[[PlayingCard rankStrings] objectAtIndex:self.rank] stringByAppendingString:self.suit];
分解:
NSArray *array = [PlayingCar rankString];
NSString *str = array[self.rank]; // modern syntax for [array objectAtIndex:self.rank]
[str stringByAppendingString:self.suit];
当然self.rank
是实际转换为[self rank]
以调用getter方法的属性语法。
答案 1 :(得分:1)
[PlayingCard rankString]
会返回一个数组。
self.rank
正在提供NSUInteger
。
我们可以使用方括号表示法来访问数组索引:
myArray[10] // this accesses the object at index 10 of myArray
[PlayingCard rankString][self.rank]
正在访问self.rank
返回的数组的[PlayingCard rankString]
索引处的对象。
该索引处的对象可能是一个可变字符串,因此我们现在在返回的对象上调用字符串方法。
您提供的代码段可以轻松地重写:
NSArray *playingCardArray = [PlayingCard rankString];
NSMutableString *rankString = playingCardArray[self.rank];
[rankString stringByAppendingString:self.suit];