Swift—下标脚本(Subscripts)

  下标脚本可以定义在类(Class)、结构体(Struct)、枚举(enumeration)这些目标中,可以认为是访问集合,列表或序列的快捷方式,使用下标脚本的索引设置和获取值,不需要再调用实例的特定的赋值和访问方法。对于同一个目标可以定义多个下标脚本,通过索引值类型的不同来进行重载,下标脚本不限于单个纬度,你可以定义多个入参的下标脚本满足自定义类型的需求。

1.下标脚本的语法

  下标脚本允许你通过在实例后面的方括号中传入一个或多个的索引值来对实例进行访问和赋值。语法类似于实例方法和计算属性的混合。与定义实例方法类似,定义下标脚本使用subscript关键字,显示声明入参(一个或多个)和返回类型。与实例方法不同的是下标脚本可以设定为读写或只读。这种方式又有点像计算属性的getter和setter:

subscript(index:Int)->Int {
get {
//返回与入参匹配的int类型的值
}
set(newValue) {
//执行赋值参数
}
}

  newValue的类型必须和下标脚本定义的返回类型相同。与计算型属性相同的是set的入参声明newValue就算不写,在set代码块中依然可以使用默认的newValue这个变量来访问新赋的值。与只读计算属性一样,可以直接将原本应该写在get代码块中的代码写在subscript中:

subscript(index:Int)->Int {
//返回与入参匹配的int类型的值
}

2.下标脚本用法

  根据使用场景不同下标脚本也具有不同的含义。通常下标脚本是用来访问集合,列表或序列中元素的快捷方式就。可以在你自己特定的类或结构体中*的实现下标脚本来提供合适的功能。

  例如,Swift的字典(Dictionary)实现了通过下标脚本来对其实例中存放的值进行存取操作。

var numberOfLegs = ["spider":8, "ant":6, "cat":4]
numberOfLegs["bird"] = 4 //存值

3.下标脚本选项

  下标脚本允许任意数量的入参索引,并且每个入参索引类型没有限制。下标脚本的返回值也可以是任意类型。

上一篇:js的异步的问题的再次理解


下一篇:Swift下标