Swift - 下标

  • 简述

    在下标的帮助下访问类、结构和枚举中的集合、序列和列表的元素成员。这些下标用于在索引的帮助下存储和检索值。数组元素是在 someArray[index] 的帮助下访问的,它在 Dictionary 实例中的后续成员元素可以作为 someDicitonary[key] 访问。
    对于单一类型,下标的范围可以从单个声明到多个声明。我们可以使用适当的下标来重载传递给下标的索引值的类型。根据用户对输入数据类型声明的要求,下标也从单维到多维不等。
  • 下标声明语法及其用法

    让我们回顾一下计算属性。下标也遵循与计算属性相同的语法。对于查询类型实例,下标写在方括号内,后跟实例名称。下标语法遵循与“实例方法”和“计算属性”语法相同的语法结构。'subscript' 关键字用于定义下标,用户可以指定单个或多个参数及其返回类型。下标可以具有读写或只读属性,并且在“getter”和“setter”属性的帮助下存储和检索实例,就像计算属性一样。

    句法

    
    subscript(index: Int) −> Int {
       get {
          // used for subscript value declarations
       }
       set(newValue) {
          // definitions are written here
       }
    }
    

    示例 1

    
    struct subexample {
       let decrementer: Int
       subscript(index: Int) -> Int {
          return decrementer / index
       }
    }
    let division = subexample(decrementer: 100)
    print("The number is divisible by \(division[9]) times")
    print("The number is divisible by \(division[2]) times")
    print("The number is divisible by \(division[3]) times")
    print("The number is divisible by \(division[5]) times")
    print("The number is divisible by \(division[7]) times")
    
    当我们使用操场运行上述程序时,我们得到以下结果 -
    
    The number is divisible by 11 times
    The number is divisible by 50 times
    The number is divisible by 33 times
    The number is divisible by 20 times
    The number is divisible by 14 times
    

    例2

    
    class daysofaweek {
       private var days = ["Sunday", "Monday", "Tuesday", "Wednesday",
          "Thursday", "Friday", "saturday"]
       subscript(index: Int) -> String {
          get {
             return days[index]
          }
          set(newValue) {
             self.days[index] = newValue
          }
       }
    }
    var p = daysofaweek()
    print(p[0])
    print(p[1])
    print(p[2])
    print(p[3])
    
    当我们使用操场运行上述程序时,我们得到以下结果 -
    
    Sunday
    Monday
    Tuesday
    Wednesday
    
  • 下标中的选项

    下标采用单个到多个输入参数,这些输入参数也属于任何数据类型。它们还可以使用可变参数和可变参数。下标不能提供默认参数值或使用任何输入输出参数。
    定义多个下标被称为“下标重载”,其中一个类或结构可以根据需要提供多个下标定义。这些多个下标是根据下标大括号内声明的值类型推断出来的。
    
    struct Matrix {
       let rows: Int, columns: Int
       var print: [Double]
       init(rows: Int, columns: Int) {
          self.rows = rows
          self.columns = columns
          print = Array(count: rows * columns, repeatedValue: 0.0)
       }
       subscript(row: Int, column: Int) -> Double {
          get {
             return print[(row * columns) + column]
          }
          set {
             print[(row * columns) + column] = newValue
          }
       }
    }
    var mat = Matrix(rows: 3, columns: 3)
    mat[0,0] = 1.0
    mat[0,1] = 2.0
    mat[1,0] = 3.0
    mat[1,1] = 5.0
    print("\(mat[0,0])")
    
    当我们使用操场运行上述程序时,我们得到以下结果 -
    
    1.0
    
    Swift 4 下标支持针对适当数据类型的单参数到多参数声明。程序将 'Matrix' 结构声明为 2 * 2 维数组矩阵来存储 'Double' 数据类型。Matrix 参数使用整数数据类型输入,用于声明行和列。
    Matrix 的新实例是通过将行数和列数传递给初始化来创建的,如下所示。
    
    var mat = Matrix(rows: 3, columns: 3)
    
    矩阵值可以通过将行和列值传递到下标来定义,用逗号分隔,如下所示。
    
    mat[0,0] = 1.0  
    mat[0,1] = 2.0
    mat[1,0] = 3.0
    mat[1,1] = 5.0