【问题标题】:Where would custom subscripts be suited over methods/functions and why?自定义下标在哪里适合方法/函数,为什么?
【发布时间】:2015-09-21 12:05:20
【问题描述】:

我在Swift 中对此进行了研究,但我对自定义下标与方法和函数相比在哪些方面有用感到困惑。使用它们而不是使用方法/函数有什么威力?

【问题讨论】:

    标签: swift subscript


    【解决方案1】:

    这纯粹是风格。只要您喜欢这种语法,就使用下标:

    myObject[mySubscript] = newValue
    

    关于这个:

    myObject.setValue(newValue, forSubscript: mySubscript)
    

    下标更简洁,在适当的情况下使用时,意图更清晰。

    【讨论】:

    • 因此,当您想访问/更改数组/字典中的元素时,最好写出自定义下标,但编写返回乘数的下标没有用...正确?另外,我不能编写访问和更改数组/字典的特定元素的方法或函数吗?.....这就是我的观点....有什么区别?只是下标关键字?......和未命名的闭包?
    • 是的,下标和方法之间的唯一区别是代码的样式和外观。是的,使用下标的最佳时机是访问/更改某物的子元素。如果您认为您的操作是“查找某些内容”,请考虑使用下标。
    • 所以基本上subscript关键字只是为了组织,编译器在看到subscript关键字时不做任何计算,只是为了让程序员更好地组织我的代码...?
    • 下标关键字所做的只是将调用方法时必须使用的语法从 myObject.setValue(newValue, forSubscript: mySubscript) 更改为 myObject[mySubscript] = newValue
    • 好的,我明白了......我真的很感谢你在帮助我解决这个问题上所花费的时间和精力......我现在更熟悉自定义下标的力量,但我相信我可能会搜索程序并查看它们的效果,以完全理解它与 funcs/methods/closures 的区别……但是你帮了很多忙,我一直在一本快速的书中研究这个,但它并没有真正分解这就是我通常感到困惑的原因。
    【解决方案2】:

    引用数组元素的方式更简单、更清晰:myArray[1]myArray.objectAtIndex(1)

    您是想说myArray[1...3],还是每次都必须说myArray.sliceFromIndex(1).throughIndex(3) 之类的话就好了?

    嘿,你知道吗?算术运算符也只是函数。所以我们不要放弃他们,所以我们不得不说类似

    let sum = a.addedTo(b.multipliedBy(c))
    

    真的不一样吗?真正拥有算术运算符有什么威力?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2013-08-09
      • 2018-03-19
      相关资源
      最近更新 更多