时间:2021-05-02
访问一个集合的元素成员,在类中的序列和列表,结构和枚举都可以使用下标。这些下标用于存储和使用索引来检索值。数组元素可使用如:someArray[index],在 Dictionary 实例及其后续成员元素的访问也可以使用如:someDicitonary[key]。
对于单一类型,下标范围可以从单一到多个声明。我们可以用适当的下标重载传递给下标索引值的类型。下标也可以根据输入数据类型声明范围从单一维度到多维度。
下标声明语法和用法
让我们回顾一下计算属性。下标也遵循计算属性相同的语法。对于查询类型的实例下标括在方括号内,接着是实例名称。下标语法遵循结构作为 “实例方法” 和 “计算属性” 相同的语法。“subscript” 关键字用来定义标,用户可以指定一个或多个参数,它们带有返回类型。下标可以有读写或只读属性和实例存储和检索使用 “getter” 和 “setter” 属性作为计算属性。
语法
复制代码 代码如下:
示例1
struct subexample {let decrementer:Int
subscript(index:Int)->Int{return decrementer / index
}}let division = subexample(decrementer:100)
println("The number is divisible by \(division[9]) times")
println("The number is divisible by \(division[2]) times")
println("The number is divisible by \(division[3]) times")
println("The number is divisible by \(division[5]) times")
println("The number is divisible by \(division[7]) times")
当我们使用 playground 运行上面的程序,得到以下结果
示例2
复制代码 代码如下:
class daysofaweek {privatevar 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()
println(p[0])
println(p[1])
println(p[2])
println(p[3])
当我们使用 playground 运行上面的程序,得到以下结果
下标选项
下标采用单一到多元的输入参数,这些输入参数也属于任意数据类型。还可以使用变量,可变参数的参数。下标不能提供缺省参数值,或使用任何 in-out 参数。
定义多个标被称为“下标重载'在一个类 或结构体根据需要可以提供多个下标定义。这些多个标是基于被下标括号内声明值的类型推断。
复制代码 代码如下:
structMatrix{let rows:Int, columns:Intvarprint:[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{returnprint[(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
println("\(mat[0,0])")
println("\(mat[0,1])")
println("\(mat[1,0])")
println("\(mat[1,1])")
当我们使用 playground 运行上面的程序,得到以下结果
Swift 下标支持单参数到多参数声明相应数据类型。该程序声明的“矩阵”结构为2*2维数组矩阵来存储 “Double” 数据类型。 矩阵参数被输入整数数据类型用来声明行和列。
矩阵新实例是通过使行和列数来初始化创建的,如下所示。
复制代码 代码如下:
矩阵值可通过传递行和列值到下标,通过逗号隔开,进行定义如下所示。
mat[0,0] = 1.0
mat[0,1] = 2.0
mat[1,0] = 3.0
mat[1,1] = 5.0
下标方法的定义
下标方法的定义语法与实例方法和计算属性的语法类似。
下标方法使用subscript关键字来指示是一个下标方法。与实例方法一样,下标方法定义中可以规定一个或多个输入参数,并带有一个返回类型。与实例方法不同的是下标方法可以是可读写的或是只读的。与计算属性的定义一样,下标方法通过使用getter和setter来传达下标方法的行为。如果在下标方法的定义中getter和setter都被指定,则定义了一个可读写的下标方法,如果下标方法的定义中不包含setter,则定义了一个只读的下标方法,并且这时代表getter方法的关键字get也可以省略。下标方法定义的完整语法如下:
下标方法的使用
你能为一个类型定义和实现多个下标方法,编译器基于你传送给下标方法的索引参数的类型来推断和选择适当的下标方法。
与方法类似,下标方法可以包含任意数量的输入参数,且这些输入参数的类型可以是任何类型,下标方法也能返回任何类型。下标方法也能使用可变参数,但不能使用in-out参数也不能通过默认参数值。
如可以定义一个带有多个输入参数的表示多纬度的下标方法,下面的例子展示了如何为一个矩阵结构定义一个带两个整数类型的下标方法以及如何使用,定义的下标方法用来索引矩阵中定义的两纬度的元素。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
详解Swift中对C语言接口缓存的使用以及数组与字符串转为指针类型的方法由于Swift编程语言属于上层编程语言,而Swift中由于为了低层的高性能计算接口,所以
Swift是一门新的编程语言,用于编写iOS和OSX应用程序。Swift结合了C和Objective-C的优点并且不受C兼容性的限制。Swift使用安全的编程模
它的用法也很简单:array_rand($arr[,$num])$arr==用来取元素的数组$num==随机取下标的个数其中第二个参数$num是可选的,默认
Word文档中输入上标下标的方法如下: 1、选中要作为上标或下标的文字。 2、右键点击“文字”,选择字体。 3、在弹窗的下边选择上标或下标即可。 Mic
在开始之前,先回顾下js中下标(数组元素/字符串中字符下标):下标总是从0开始计数,例如vararr=[1,2,3];//数组的长度为3,元素下标依次为:0,1