类、结构体和枚举可以定义下标,他可以快速简单地访问集合(set,array,dict)的元素,你可以使使用下标来获取和设置集合元素。 你可以定义一个类型的多个下标,通过索引值类型的不同来进行重载,而且索引值的个数可以是多个。
语法
先看一个实例
subscript(index: Int) -> Int { get { // return an appropriate subscript value here } set(newValue) { // perform a suitable setting action here } }
它允许你通过在实例后面的方括号中传入一个或者多个的索引值来对实例进行访问和赋值。语法类似于实例方法和计算型属性的混合。与定义实例方法类似,定义下标使用subscript关键字,显式声明入参(一个或多个)和返回类型。与实例方法不同的是下标可以设定为读写或只读。这种方式又有点像计算型属性的getter和setter:
newValue的类型必须和subscript定义的返回类型相同。与计算型属性相同的是set的入参声明newValue就算不写,在set代码块中依然可以使用默认的newValue这个变量来访问新赋的值。
与只读计算型属性一样,可以直接将原本应该写在get代码块中的代码写在subscript中:
subscript(index: Int) -> Int { // 返回与入参匹配的Int类型的值 }
时间: 2024-10-14 17:00:52