Swift—下标-备

看下面的示例代码是不是使用过:

 

 
  1. var studentList: String[]  = ["张三","李四","王五"]  
  2.   
  3. studentList[0] = "诸葛亮"  
  4.   
  5.    
  6.   
  7. var studentDictionary = [102: "张三",105: "李四", 109: "王五"]  
  8.   
  9. studentDictionary[110] = "董六"  

 

 

 

 

在访问数组和字典的时候,可以采用下标访问。其中数组的下标是整数类型索引,字典的下标是它的“键”。

 

下标

Swift中的下标相当于Java中的索引属性和C#中的索引器。

下标访问的语法格式如下:

 

 

 

 

 
  1. <span style="font-family:Courier;color:windowtext;font-size: 8pt; mso-ascii-font-family: Courier; mso-hansi-font-family: Courier; mso-bidi-font-family: 'Courier New'; mso-font-kerning: 0pt;"><span style="font-family:宋体;">面</span></span>向对象类型 类型名 {   
  2.   
  3.     其他属性  
  4.   
  5.      ...   
  6.   
  7.     subscript(参数: 参数数据类型) -> 返回值数据类型 {     
  8.   
  9.        get {     
  10.   
  11.          return 返回值  
  12.   
  13.        }       
  14.   
  15.    
  16.   
  17.        set(新属性值) {  
  18.   
  19.           ...  
  20.   
  21.        }            
  22.   
  23.     }              
  24.   
  25. }  

 

 

 

 

下标也有类似于计算属性的getter和setter访问器。

getter访问器是一个方法,在最后使用return语句将计算结果返回。

setter访问器“新属性值”是要赋值给属性值。参数的声明可以省略,系统会分配一个默认的参数newValue。

 

示例:二维数组

Swift中没有提供二维数组,只有一维数组Array。可以自定义一个二维数组类型,然后通过两个下标参数访问它的元素,形式上类似于C语言的二维数组。

采用下标的二维数组示例代码如下:

 

 
  1. struct DoubleDimensionalArray {  //定义了二维数组结构体  
  2.   
  3.       
  4.   
  5.     let rows: Int, columns: Int       //存储属性rows和columns  
  6.   
  7.     var grid: [Int]  
  8.   
  9.       
  10.   
  11.     init(rows: Int, columns: Int) {   //构造函数  
  12.   
  13.         self.rows = rows  
  14.   
  15.         self.columns = columns  
  16.   
  17.         grid = Array(count: rows * columns, repeatedValue: 0)  //初始化存储属性grid  
  18.   
  19.     }  
  20.   
  21.       
  22.   
  23.     subscript(row: Int, col: Int) -> Int {    //定义下标  
  24.   
  25.           
  26.   
  27.         get {  
  28.   
  29.             return grid[(row * columns) + col]    
  30.   
  31.         }  
  32.   
  33.           
  34.   
  35.         set (newValue1){  
  36.   
  37.             grid[(row * columns) + col] = newValue1       
  38.   
  39.         }  
  40.   
  41.     }  
  42.   
  43.       
  44.   
  45. }  
  46.   
  47.    
  48.   
  49. var ary2 = DoubleDimensionalArray(rows: 10, columns: 10) //创建并初始化10×10大小的二维数组  
  50.   
  51.    
  52.   
  53. //初始化二维数组  
  54.   
  55. for var i = 0; i 10; i++ {  
  56.   
  57.     for var j = 0; j 10; j++ {  
  58.   
  59.         ary2[i,j] = i * j            
  60.   
  61.    
  62.   
  63.     }  
  64.   
  65. }  
  66.   
  67.    
  68.   
  69. //打印输出二维数组  
  70.   
  71. for var i = 0; i 10; i++ {  
  72.   
  73.     for var j = 0; j 10; j++ {  
  74.   
  75.         print("\t \(ary2[i,j])")  
  76.   
  77.     }  
  78.   
  79.     print("\n")  
  80.   
  81. }  


 

 

 

 

输出结果如下:

0  0  0  0  0  0  0  0  0  0

0  1  2  3  4  5  6  7  8  9

0  2  4  6  8  10  12  14  16  18

0  3  6  9  12  15  18  21  24  27

0  4  8  12  16  20  24  28  32  36

0  5  10  15  20  25  30  35  40  45

0  6  12  18  24  30  36  42  48  54

0  7  14  21  28  35  42  49  56  63

0  8  16  24  32  40  48  56  64  72

0  9  18  27  36  45  54  63  72  81

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值