关于C#:NSArray之后的方括号指数是什么意思?

What does a square-bracketed index after an NSArray mean?

本问题已经有最佳答案,请猛点这里访问。

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

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

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

这是我没有"得到"的,可能只是语法问题……这是什么?

如何

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

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

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


你的理解是完全正确的;你只是缺少了一点语法。使用array[index]形式订阅访问NSArray是clang不久前引入的"集合文本"功能的一部分。

它被编译器转换为对[array objectAtIndexedSubscript:index]的调用。


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

所以,

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

(基于索引)。

嗯…抱歉问了个愚蠢的问题…