带方括号的objective-c点表示法
嗨,我不明白这个代码当然是CS193p带方括号的objective-c点表示法,objective-c,object,syntax,brackets,cs193p,Objective C,Object,Syntax,Brackets,Cs193p,嗨,我不明白这个代码当然是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"]; } +
[[PlayingCard rankStrings][self.rank] stringByAppendingString:self.suit];
其中rankString是变量方法
+ (NSArray *)rankStrings
{
return @[@"?", @"A", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"J", @"Q", @"K"];
}
+ (NSArray *)validSuits
{
return @[@"♥️", @"♦️", @"♠️", @"♣️"];
}
self.rank是随机数的获取者
@property (nonatomic) NSUInteger rank;
另一个变量方法中的self.suit
+ (NSArray *)rankStrings
{
return @[@"?", @"A", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"J", @"Q", @"K"];
}
+ (NSArray *)validSuits
{
return @[@"♥️", @"♦️", @"♠️", @"♣️"];
}
我在代码NSLog中插入以了解其功能。。。。我知道它从rankstring中获取等级,并将它们与西装连接起来。。。。但我不明白怎么做!附加字符串的方法很清楚。。。但是你如何获得价值观排名呢从rankStrings?[PlayingCard rankStrings]是对变量方法的简单调用,整数秩是一个getter您发布的第一行代码是以下内容的简写:
[[[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方法的属性语法。[PlayingCard rankString]
可能会返回一个数组
self.rank
正在提供一个nsuiger
我们可以使用方括号表示法访问数组索引,如下所示:
myArray[10] // this accesses the object at index 10 of myArray
[PlayingCard rankString][self.rank]
正在访问由[PlayingCard rankString]
返回的数组的self.rank
索引处的对象
该索引处的对象可能是一个可变字符串,因此我们现在对返回的对象调用string方法
您提供的代码片段可以很容易地重写为:
NSArray *playingCardArray = [PlayingCard rankString];
NSMutableString *rankString = playingCardArray[self.rank];
[rankString stringByAppendingString:self.suit];
你是对的,这很令人困惑,因为
[]
有点“过载”[self.rank]
实际上是从方法调用[PlayingCard rankStrings]
返回的数组上的索引操作。当然,
这里用来暗示对rank
的“getter”的方法调用,不是对结构中由self
标识的字段的引用,就像香草C/C++一样。要真正做到这一点,请使用objectAtIndex
替换索引,并使用[]
引用替换虚线属性引用。