美文网首页swift学习笔记
下标语法(Subscript Syntax)

下标语法(Subscript Syntax)

作者: 成功的失败者 | 来源:发表于2016-05-13 22:22 被阅读81次

下标语法概念:

类和结构体以及枚举能够声明下标快捷访问集合中的成员。例如数组someArray[index]或者字典someDictionary[key]可以通过下标检索和设置对应下标的成员的值。下标可以查询一个类型的一个或多个写在实例名称后的方括号中的实例的值。如下所示:用subscript关键字来定义一个下标方法,里面有get和set两个方法。这种方式是通过同样的方式作为计算属性的getter和setter 。

subscript(index: Int) -> Int {
     get {
           // return an appropriate subscript value here
          }
     set(newValue) {
           // perform a suitable setting action here
          }
 }```
newValue的类型和subscript的返回类型相同,如果你的set方法没有设置参数系统会默认有一个newValue参数

subscript(index: Int) -> Int {
// return an appropriate subscript value here
}```
下面定义一个TimesTable 结构体并声明一个subscript(下标)方法。返回值是multiplier 和 index的乘积。例如下面multiplier 的值是3,index的值是6,threeTimesTable[6]返回的值是18

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"```
下面定义一个Matrix 结构体里面有int类型的rows和columns两个属性,以及一个存Double类型grid数组

struct Matrix {
let rows: Int, columns: Int
var grid: [Double]
init(rows: Int, columns: Int) {
self.rows = rows
self.columns = columns
grid = Array(count: rows * columns, repeatedValue: 0.0)//初始化一个grid 数组
}
func indexIsValidForRow(row: Int, column: Int) -> Bool {
return row >= 0 && row < rows && column >= 0 && column < columns
}//这个方法判断row和column是否满足要求
subscript(row: Int, column: Int) -> Double {
get {
assert(indexIsValidForRow(row, column: column), "Index out of range")
return grid[(row * columns) + column]//返回对应下标的元素的值
}
set {
assert(indexIsValidForRow(row, column: column), "Index out of range")
grid[(row * columns) + column] = newValue//给对应下标的元素设置值
}
}
}```

//定义一个两行两列的Matrix
 var matrix = Matrix(rows: 2, columns: 2)```
![](https://developer.apple.com/library/ios/documentation/Swift/Conceptual/Swift_Programming_Language/Art/subscriptMatrix01_2x.png)

//通过下标设置matrix的grid数组对应的行列的元素值
matrix[0, 1] = 1.5
matrix[1, 0] = 3.2```


相关文章

  • 下标语法(Subscript Syntax)

    下标语法概念: 类和结构体以及枚举能够声明下标快捷访问集合中的成员。例如数组someArray[index]或者字...

  • 第十二章 下标

    c++下标通过重载操作符operator []实现,swift的下标语法: subscript(index: In...

  • Swift基础教程--Subscripts

    简单的定义一个下标方法subscript (name:String){ ...} 在下标语法中,参数不能用ino...

  • Swift5.1学习随笔之下标subscript

    下标subscript 使用subscript可以给任意类型(枚举、结构体、类)增加下标功能 subscript的...

  • Swift subscript下标语法

    下标语法 一般配合 Switch 使用 类、结构体和枚举都可以定义下标,下标是用于访问集合、列表或序列的成员元素的...

  • Swift - 下标(Subscript)

    下标(Subscript) 使用 subscript 可以给任意类型(枚举、结构体、类)增加下标功能subscri...

  • Swift-下标(subscript)

    下标(subscript) 使用subscript可以给任意类型(枚举、结构体、类)增加下标功能 subscrip...

  • 下标(subscript)

    使用subscript可以给任意类型(枚举 结构体 类)增加下标功能,有些地方也翻译为:下标脚本 subscr...

  • 下标

    下标(subscript) 使用subscript可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为...

  • [Swift5.1] 10-下标

    下标(subscript) 使用subscript可以给任意类型(枚举、结构体、类)增加下标功能,有些地方也翻译为...

网友评论

    本文标题:下标语法(Subscript Syntax)

    本文链接:https://www.haomeiwen.com/subject/ybsmrttx.html