Swift开篇010->下标

原创 2016年06月01日 17:08:08

PART_ONLY 下标(subscript)

  1. 简介

    • 下标可定义在类、结构体、枚举中,是访问集合、列表、序列元素的快捷方式
  2. 语法格式

    • 下标了设定为读写或只读

      // 读写
      subscript(index: Int) -> Int {
          get {
            // 返回一个适当的 Int 类型的值
          }
      
          // newValue 类型与下标返回类型相同
          set(newValue) {
            // 执行适当的赋值操作
          }
      }
      // 只读
      subscript(index: Int) -> Int {
          // 返回一个适当的 Int 类型的值
      }
  3. 演示

    struct TimesTable {
        let multiplier: Int
    
        // 只读的下标
        subscript(index: Int) -> Int {
            return multiplier * index
        }
    }
    
    let threeTimesTable = TimesTable(multiplier: 3)
    // threeTimesTable[6] 的值为 18
  4. 下标用法举例(Dictionary)

    • 本例通过下标返回将可选类型(Int?)

    • 通过下标删除键对应的值:将键对应的值赋值为 nil 即可

      var animals = ["spider": 8, "ant": 6, "cat": 4]
      // 通过下标插入新的键值对
      animals["bird"] = 2
  5. 下标选项

    • 下标可接受任意数量、类型的入参,下标的返回值也可是任意类型

    • 下标可使用变量入参和可变参数,但不能用输入输出参数,也不能给参数设置默认值

    • 类或结构体可提供多个下标实现,使用时通过入参的数量和类型自动匹配

    • 下为矩形结构体的案例

      struct Matrix {
          // 行列
          let rows: Int, columns: Int
          // 根据行列,得到数组值
          var grid: [Double]
      
          init(rows: Int, columns: Int) {
              self.rows = rows
              self.columns = columns
      
              grid = Array(count: rows * columns, repeatedValue: 0.0)
          }
      
          // 角标越界判断
          func indexIsValidForRow(row: Int, column: Int) -> Bool {
              return row >= 0 && row < rows && column >= 0 && column < columns
          }
      
          // 下标
          subscript(row: Int, column: Int) -> Double {
              get {
                  assert(indexIsValidForRow(row, column: column), "Index out of range")
                  return grid[(row * columns) + column]
              }
              set {
                  assert(indexIsValidForRow(row, column: column), "Index out of range")
                  grid[(row * columns) + column] = newValue
              }
          }
      }
      
      // 构造 2*2 的矩阵实例
      var matrix = Matrix(rows: 2, columns: 2)
      
      matrix[0, 1] = 1.5 // 赋值
      matrix[1, 0] = 3.2 // 赋值
      
      let someValue = matrix[2, 2]
      // 越界:断言触发

以上。如有错误和疑问,欢迎指正提出。 catface.wyh@gmail.com

版权声明:本文为博主原创文章,如需转载请声明作者信息,谢谢。

相关文章推荐

swift详解之八---------------下标脚本

swift详解之八—————下标脚本下标脚本 可以定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中,可以认为是访问对象、集合或序列的快捷方式,不需要再调用...

Swift回忆录下标——subscript

Swift回忆录下标——subscript定义下标可以定义在类、结构体和枚举中,是访问集合,列表或序列中元素的快捷方式。可以使用下标的索引,设置和获取值,而不需要再调用对应的存取方法。语法下标允许你通...

Swift中文教程(十二) 下标

Swift中文教程(十二) 下标 BY 史薇芙特 · 2014年6月10日- 阅读量:1,285 类,结构和枚举类型都可以通过定义下标来访问一组或者一个序列中的成员元素。通...

Swift3.0中文教程:12.下标

下标 (subscripts)可以定义在类(class)、结构体(structure)和枚举(enumeration)中,是访问集合(collection),列表(list)或序列(sequence)...

对照Java学习Swift--下标(Subscripts)

Java中限制了下标的操作,只有在数组中才能使用,非常简单,但是在Swift中,可以在类(class)、结构体(structure)和枚举(enumeration)中,是访问集合(collection...

swift学习日记(七)下标 继承

一,下标 下标这个也是可以跟c++平滑过渡的特性,使用方法几乎一样 1,读写 swift的下标操作是有读写和只读两种属性的,比如String的下标操作就是只读,不允许你修改 这里我们主要讨论的...

swift基础笔记6-方法&下标脚本

摘要:类、结构体、枚举都可以定义实例方法;实例方法为给定类型的实例封装 了具体的任务与功能。类、结构体、枚举也可以定义类型方法;类型方法与类型本身相关联。类型方法与 Objecti ve-C 中的类方...

iOS --- 下标和计算符重载(swift2.3)

iOS — 下标和计算符重载(swift) 下面简单的介绍下标和计算符重载的应用下标基础 多维下标 运算符重载基础 重载比较运算符 自定义运算符 一:下标基础struct Vector3 { ...

《swift2.0 官方教程中文版》 第2章-12下标脚本

import Foundation //用下标脚本访问一个数组(Array)实例中的元素可以这样写 so meArray[index] ,访问字典(Dictionary)实例中的元素可以这样...

swift 下标

下标语法 下标允许你通过在实例名称后面的方括号中传入一个或者多个索引值来对实例进行存取。语法类似于实例方法语法和计算型属性语法的混合。与定义实例方法类似,定义下标使用subscript关键字,指定一...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)