详解Swift中的下标访问用法

 更新时间:2016年07月05日 18:47:52   作者:珲少  
在Swift中我们可以用subscript函数来定义下标,从而通过下标来访问数组与字典等数据结构,这里我们就来详解Swift中的下标访问用法:

Swift中的Array,Dictionary类型可以通过下标或者键值的方式来进行数据的访问,实际上在Swift的语法中,下标可以定义在类、结构体、枚举中。开发者可以通过下标的方式来对属性进行访问而不用使用专门的存取方法。并且定义的下标不限于一维,开发者可以定义多维的下标来满足需求。

下标的语法结构

 下标使用subscript来定义,其有些类似于方法,参数和返回值本别作为下标入参和通过下标所取的值。但是在subscript实现部分,又十分类似于计算属性,其需要实现一个get块和可选实现一个set块,get块用于使用下标取值,set块用于使用下标设置值,因此,subscript结构更像是计算属性和方法的混合体,示例如下:

class MyClass {
  var array=[1,1,1,1,1]
  subscript(param1:Int)->Int{
    set{
      array[param1] = newValue
    }
    get{
      return array[param1]
    }
  }
}
var obj = MyClass()
obj[0] = 3

开发者可以只编写get块来实现只读的下标访问。对于多维下标的访问方式,只需修改subscript中的参数个数即可,示例如下:
class MyClass {
  var array=[1,1,1,1,1]
  subscript(param1:Int,param2:Int)->Int{
    set{
      array[param1] = newValue
    }
    get{
      return array[param1]
    }
  }
}
var obj = MyClass()
obj[0,1] = 3

下标的特性

Swift中的下标可以自定参数个数和参数类型,返回数据的类型开发者也可以进行自定义。但是有一点需要注意,下标的参数不能设置默认值,也不能设置为in-out类型。多维下标常用语行列数据的访问,示例如下:

class SectionAndRow {
  var array:Array<Array<Int>> = [ [1,2]
                  ,[3,4]
                  ,[5,6]
                  ,[7,8]
                 ]
  subscript(section:Int,row:Int)->Int{
    get{
      let temp = array[section]
      return temp[row]
    }
  }
  
}
var data = SectionAndRow()
//通过二维下标取值
data[1,1]

相关文章

  • Swift操作Quartz 2D进行简单的绘图与坐标变换的教程

    Swift操作Quartz 2D进行简单的绘图与坐标变换的教程

    这篇文章主要介绍了Swift操作Quartz 2D进行简单的绘图与坐标变换的教程,Quartz 2D是Core Graphics框架中的一个重要组件,经常被Mac OS或和iOS开发者用来绘图,需要的朋友可以参考下
    2016-04-04
  • Swift初始化方法的使用介绍

    Swift初始化方法的使用介绍

    Swift有着超级严格的初始化方法,不仅强化了designated初始化方法的地位,所有不加修饰的init方法都需要在方法中确保非Optional的实例变量被赋值初始化,下面这篇文章主要给大家介绍了关于Swift中初始化init的相关资料,需要的朋友可以参考下。
    2022-08-08
  • SwiftUI List在MacOS中的性能优化示例

    SwiftUI List在MacOS中的性能优化示例

    这篇文章主要为大家介绍了SwiftUI List在MacOS中的性能优化示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-09-09
  • Swift继承Inheritance浅析介绍

    Swift继承Inheritance浅析介绍

    继承我们可以理解为一个类获取了另外一个类的方法和属性。当一个类继承其它类时,继承类叫子类,被继承类叫超类(或父类),在Swift中,类可以调用和访问超类的方法,属性和下标脚本,并且可以重写它们。我们也可以为类中继承来的属性添加属性观察器
    2022-08-08
  • Swift实现Selection Sort选择排序算法的实例讲解

    Swift实现Selection Sort选择排序算法的实例讲解

    选择排序是一种稳定的排序算法,且实现代码通常比冒泡排序要来的简单,这里我们就来看一下Swift实现Selection Sort选择排序的实例讲解
    2016-07-07
  • Swift Extension扩展得使用详细介绍

    Swift Extension扩展得使用详细介绍

    在swift中,extension与Objective-C的category有点类似,但是extension比起category来说更加强大和灵活,它不仅可以扩展某种类型或结构体的方法,同时它还可以与protocol等结合使用,编写出更加灵活和强大的代码
    2022-09-09
  • Swift3.0剪切板代码拷贝及跨应用粘贴实现代码

    Swift3.0剪切板代码拷贝及跨应用粘贴实现代码

    这篇文章主要为大家详细介绍了Swift3.0剪切板代码拷贝及跨应用粘贴的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • swift计步器CMPedometer的使用方法

    swift计步器CMPedometer的使用方法

    这篇文章主要为大家详细介绍了swift计步器CMPedometer的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-09-09
  • R.swift的使用与安装教程

    R.swift的使用与安装教程

    这篇文章主要给大家介绍了关于R.swift使用与安装的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-05-05
  • SwiftUI使用Paths和AnimatableData实现酷炫的颜色切换动画

    SwiftUI使用Paths和AnimatableData实现酷炫的颜色切换动画

    这篇文章主要介绍了SwiftUI使用Paths和AnimatableData实现酷炫的颜色切换动画,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2020-05-05

最新评论