Swift 下标

Swift 下标

在类、结构体和枚举中,通过下标来访问集合、序列和列表的元素成员。这些下标用于通过索引来存储和检索值。可以使用 someArray[index] 来访问数组元素,以及使用 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")

当我们使用playground运行以上程序时,我们得到以下结果 –

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])

当我们在playground上运行上面的程序时,我们会得到以下结果−

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])")

当我们使用playground运行上面的程序时,我们得到如下结果−

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

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程