【问题标题】:What does a square-bracketed index after an NSArray mean? [duplicate]NSArray 后面的方括号索引是什么意思? [复制]
【发布时间】:2013-11-20 23:52:04
【问题描述】:

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

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

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

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

怎么样

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

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

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

【问题讨论】:

    标签: objective-c cocoa-touch indexing nsarray objective-c-literals


    【解决方案1】:

    你的理解完全正确;您只是缺少一点语法。不久前 Clang 引入了 NSArrays 和 the array[index] form is part of the "collection literals" 功能的订阅访问。

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

    【讨论】:

    • 当然可以。如果您好奇,请添加文档链接,@DrDavid。
    【解决方案2】:

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

    所以,

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

    (基于索引)。

    Duh.. 抱歉问了一个愚蠢的问题...

    【讨论】:

    • 不是一个愚蠢的问题,我最初也对两个括号的语法感到困惑。然后我意识到它是一个数组旁边的索引:因此 cardA.contents 将始终等于 cardB.contents 的值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-24
    • 2018-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多