代码之家  ›  专栏  ›  技术社区  ›  Saurabh Saini

结构下标

  •  0
  • Saurabh Saini  · 技术社区  · 4 月前

    我试图通过一个例子来理解下标

    struct TimesTable {
        let multiplier: Int
        subscript(index: Int) -> Int {
            return multiplier * index
        }
    }
    let threeTimesTable = TimesTable(multiplier: 3)
    print("six times three is \(threeTimesTable[6])")
    // Prints "six times three is 18"\
    

    怀疑是下标放在列表、序列或集合上。 但在上面的例子中。列表、序列或集合在哪里?

    return默认返回get值,multiplier是Int,index是Int。实例是Struct的,但不包含任何列表、序列或集合,我认为它只是一个简单的方法。

    我正期待着这样的事情

    struct Matrix {
    
    ...
    
    var grid: [Double]
    ...
     subscript(row: Int, column: Int) -> Double {
            get {
                assert(indexIsValid(row: row, column: column), "Index out of range")
                return **grid[(row * columns) + column]**
            }
    
    

    即阵列操作

    1 回复  |  直到 4 月前
        1
  •  0
  •   matt    4 月前

    关键在于,在Swift中,下标是一种任意操作,可以应用于 任何 类型就像 任何 操作,例如 + ,可以应用于 任何 类型,只要它被声明为该类型的合法类型。因此,它可以 程序员决定赋予它的任何含义。

    当然,按照惯例,类似 array[index] “表示”该索引号处的数组元素;但在Swift中,这一事实并不是神奇地内置于语言中的,而是 宣布 对于数组类型(或它采用的某种协议)。

    无论谁写了你给出的例子,都在证明这一点。他们任意 果断的 对于TimesTable对象,下标表示乘法, 因为他们可以自由决定 .

    下标有什么有趣的意义 想出in 你的 Swift编程。。。?