加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Swift 子脚本(十一)

发布时间:2020-12-14 01:34:02 所属栏目:百科 来源:网络整理
导读:子脚本 (Subscripts) 定义在类、结构体和枚举中,表示访问对象、集合或序列的快捷方式,不需要再调用实例的特定的赋值和访问方法 1.语法 子脚本允许通过在实例后面的方括号传入一个或多个索引值来对实例进行访问和操作,使用 subscript 关键字,显示声明传入
子脚本 (Subscripts)

定义在类、结构体和枚举中,表示访问对象、集合或序列的快捷方式,不需要再调用实例的特定的赋值和访问方法

1.语法

子脚本允许通过在实例后面的方括号传入一个或多个索引值来对实例进行访问和操作,使用 subscript 关键字,显示声明传入的参数和返回的类型
[objc] view plain copy
  1. //newValue的类型必须和脚本定义的返回类型相同
  2. subscript(index:Int)->Int{
  3. get{
  4. //returnanappropriatesubscriptvaluehere
  5. }
  6. set(newValue){
  7. //performasuitablesettingactionhere
  8. }
  9. //如果是只读属性,就是只有getter方法,那原get代码块可直接写在subscript中
  10. subscript(index:Int)->Int{
  11. //以下例子定义一个结构体,用来展示传入整数的n倍
  12. structTimesTable{
  13. letmultiplier:Int
  14. returnmultiplier*index
  15. letthreeTimesTable=TimesTable(multiplier:3)
  16. println("sixtimesthreeis(threeTimesTable[6])")
  17. //prints"sixtimesthreeis18"

2.用法

通常用来访问集合,列表或序列中的元素
    varnumberOfLegs=["spider":8,"ant":6,"cat":4]
  1. numberOfLegs["bird"]=2

3.选项

子脚本允许任意数量的参数,并且参数类型没有限制,一个类或结构体可使用多个子脚本的实现,根据传入的参数进行区分,称为子脚本的重载
    structMatrix{
  1. rows:Int,columns:Int
  2. vargrid:Double[]
  3. init(rows:Int,columns:Int){
  4. self.rows=rows
  5. self.columns=columns
  6. grid=Array(count:rows*columns,0); background-color:inherit">repeatedValue:0.0)
  7. funcindexIsValidForRow(row:Int,0); background-color:inherit">column:Int)->Bool{
  8. returnrow>=0&&row<rows&&column>=0&&column<columns
  9. subscript(row:Int,0); background-color:inherit">column:Int)->Double{
  10. assert(indexIsValidForRow(row,0); background-color:inherit">column:column),"Indexoutofrange")
  11. returngrid[(row*columns)+column]
  12. set{
  13. grid[(column]=newValue
  14. varmatrix=Matrix(rows:2,0); background-color:inherit">columns:2)
  15. matrix[0,0); background-color:inherit">1]=1.5
  16. matrix[1,0); background-color:inherit">0]=3.2
  17. letsomeValue=matrix[2,0); background-color:inherit">2]
  18. //thistriggersanassert,because[2,2]isoutsideofthematrixbounds

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读