不用服务器做视频网站吗/今日新闻国际最新消息
说起下标的作用对于数组和字典来说并不用陌生,但在Swift中所有的类型都支持下标。用下标可以很方便的访问对象的具体值。
语法格式
使用subscript关键字定义下标
subscript(形参列表)->下标返回值类型
{get{//getter部分执行体,该部分必须有返回值
}
[set(形参名)
{
//setter部分执行体,该部分一定不能有返回值
}]
}
set部分:set部分可定义一段执行性代码,这段代码用于对下标赋值。Swift允许定义只读下标,因此可以省略set部分,set部分形参代表了通过下标赋值时传入的新值,当然可以省略set部分形参,会提供隐式的形参名:newValue。
get部分:这段代码将返回下标的值。
注意:定义下标时只能省略set部分,不能省略get部分。Swift只支持只读下标,并不支持“只写下标”
struct Rect{var x:Intvar y:Intvar width:Intvar height:Intsubscript(idx:Int )->Int{get {switch(idx){case 0:return self.xcase 1:return self.ycase 2:return self.widthcase 3:return self.heightdefault:print("不支持")return 0}}set{switch(idx){case 0:self.x=newValuecase 1:self.y=newValuecase 2:self.width=newValuecase 3:self.height=newValuedefault:print("不支持该索引值")}}}}
}var rect=Rect(x:20,y:12,width:200,height:300)rect[0]=40rect[1]=67print("\(rect[0],rect[1])")
下标重载
一个类型可以包括多个下标,只要多个下标的形参列表不同(形参数量或者形参类型不同)或者返回值类型不同即可,这种功能成为下标重载。
同一个类型可以定义多个下标,Swift允许通过下标参数列表或返回值类型来区分不同的下标,同一个类型中定义多个不同的下标称为下标重载。