1

通过 iTunes U 为 iPhone 和 iPad 开发 iOS 7 应用程序以及在第 120 页的第 3 课幻灯片中,有一个测验问题询问以下代码行的作用。坦率地说,我有点难过,希望有人能把它分解。

cardA.contents = @[cardB.contents,cardC.contents][[cardB match:@[cardC]] ? 1 : 0];

所以,我得到了第一部分,cardA.contents =一个新的数组,数组中包含cardB.contentsand cardC.contents。但是,接下来(我猜??)一个索引返回 1 或 0,具体取决于是否cardB匹配包含cardC.

这是我没有“得到”的东西,也许这只是一个语法问题……这是做什么的?

怎么

cardA.contents = @[cardB.contents,cardC.contents][0];

或者

cardA.contents = @[cardB.contents,cardC.contents][1];

有效的?或者,我错过了什么?

4

2 回答 2

3

你的理解是完全正确的;您只是缺少一点语法。NSArray使用表单对s 进行array[index]标访问是Clang 不久前引入的“集合文字”功能的一部分。

它由编译器转换为对[array objectAtIndexedSubscript:index].

于 2013-11-08T20:40:25.510 回答
2

像往常一样,写出来,这是有道理的。字面意思是,如果 cardB 匹配 cardC,则使用索引 [1] (cardC),如果不匹配,则使用索引 [0] (cardB)

所以,

cardA.contents = cardB.contents // if does NOT match
cardA.contents = cardC.contents // if matches

(基于索引)。

呃..对不起一个愚蠢的问题......

于 2013-11-08T20:40:36.217 回答