swift具体解释之八—————下标脚本


下标脚本 能够定义在类(Class)、结构体(structure)和枚举(enumeration)这些目标中。能够觉得是訪问对象、集合或序列的快捷方式。不须要再调用实例的特定的赋值和訪问方法

关键字 subscript

下标脚本能够设定为 仅仅读 和 读写 相似于gettersetter

//语法
subscript(index : Int) ->Int
{
get{
}
set(newValue){
}
}

以下看一个样例 :

struct  Tables {
var mul = 2;
//仅仅读的下标脚本
subscript(index :Int)->Int{
return 2*index
}
}
let tb = Tables()
print(tb[2]) //4

下标脚本 能够传入多个參数 或者可变类型 。可是inout和默认參数不行 。

一个类或者结构体中能够有多个下标脚本 能够依据传入的參数类型进行区分

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) + columns] = newValue
}
}
}

Matrix提供了一个两个入參的构造方法,入參各自是rows和columns。创建了一个足够容纳rows * columns个数的Double类型数组。

为了存储。将数组的大小和数组每一个元素初始值0.0。都传入数组的构造方法中来创建一个正确大小的新数组

你能够通过传入合适的row和column的数量来构造一个新的Matrix实例:var matrix = Matrix(rows: 2, columns: 2)

上例中创建了一个新的两行两列的Matrix实例。

在阅读顺序从左上到右下的Matrix实例中的数组实例grid是矩阵二维数组的扁平化存储:

示意图

grid = [0.0, 0.0, 0.0, 0.0]

col0 col1

row0 [0.0, 0.0,

row1 0.0, 0.0]

将值赋给带有row和column下标脚本的matrix实例表达式能够完毕赋值操作,下标脚本入參使用逗号切割

matrix[0, 1] = 1.5

matrix[1, 0] = 3.2

上面两条语句分别让matrix的右上值为 1.5,坐下值为 3.2:

[0.0, 1.5,

3.2, 0.0]

这个基本算官方的样例。

学习iOS,有他就够了,小码哥视频,传智、黑马、各种swift书籍

swift具体解释之八---------------下标脚本的更多相关文章

  1. swift学习笔记之-下标脚本

    //下标脚本subscript import UIKit /*下标脚本(Subscripts) 下标脚本: 1.可以定义在类(Class).结构体(structure)和枚举(enumeration) ...

  2. Swift学习笔记(15)--下标脚本(Subscripts)

    下标脚本可以定义在类(Class).结构体(structure)和枚举(enumeration)这些目标中,使用中类似数组或者字典的用法 1.定义 定义下标脚本使用subscript关键字,语法: s ...

  3. 5.Swift枚举|结构体|类|属性|方法|下标脚本|继承

    1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum  Celebrity{  case DongXie,XiDu,Nandi,BeiGai }  // 从左 ...

  4. Swift—下标脚本(Subscripts)

    下标脚本可以定义在类(Class).结构体(Struct).枚举(enumeration)这些目标中,可以认为是访问集合,列表或序列的快捷方式,使用下标脚本的索引设置和获取值,不需要再调用实例的特定的 ...

  5. iOS - Swift Subscript 下标脚本

    1.Subscript 下标脚本允许你通过在实例后面的方括号中传入一个或者多个的索引值来对实例进行访问和赋值.语法类似于实例方法和计算型属性的混合.与定义实例方法类似,定义下标脚本使用 subscri ...

  6. Swift枚举|结构体|类|属性|方法|下标脚本|继承

    1. 枚举: ->在Swift中依然适用整数来标示枚举值,需搭配case关键字 enum  Celebrity{  case DongXie,XiDu,Nandi,BeiGai }  // 从左 ...

  7. Swift的属性,方法,下标脚本以及继承

    从这篇章节起,Swift编程语言指南大部分的重要内容在于概念,代码并非太多.理解Swift的面向对象理念,语法以及类结构,构造析构过程对于非常好的应用Swift语言将会有比較大的帮助. 属性 存储属性 ...

  8. Swift 下标脚本

    前言 在访问一个数组实例的元素时,可以使用 Array[index] 的形式.在访问一个字典实例的元素时,可以使用 Dictionary[index] 的形式.这种方括号的形式就是 "下标脚 ...

  9. Swift - 下标脚本方法介绍及实例

    定义下标脚本之后,可以使用“[]”来存取数据类型的值. 示例1:实现一个我们自定的字符串类,可以方便的通过索引获取某一个字符值,或某一部分字符串.同时也可以通过索引,给某一部分赋值. 1 2 3 4 ...

随机推荐

  1. selenium自动化(三).........................................框架篇

    三.Unittest框架介绍: 1.Unittest类似于java中的Junit,功能较为简单,逻辑简单,理解和使用起来比较简单 1)       安装:自带框架,无需安装 2)       使用:可 ...

  2. NuSOAP简介 php中使用webservice

    许多机构已经采用了Apach和PHP作为他们的Web应用环境.在Web services模式中采用PHP可能看上去可能会比较难.但是事实上,搭配NuSoap,你可以轻松的应用PHP构建SOAP的客户端 ...

  3. UVA-1347 Tour 动态规划 难以确定的状态

    题目链接:https://cn.vjudge.net/problem/UVA-1347 题意 给出按x坐标排序的几个点. 欲从最左边不回头的走到最右边,然后再返回最左边. 每个点都要被访问,且只能经过 ...

  4. Django综合基础知识

    Django框架简介 MVC框架和MTV框架 MVC,全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View) ...

  5. 【PRML学习笔记】第四章:分类的线性模型

    一.基础概念 线性分类模型:决策面(decision boundary)是输入向量的线性函数 目标类别的表示"1 of K" :$ t = (0,1,0,0,0)^T$ 二.分类问 ...

  6. Linux 文件系统挂载

    文件系统挂载简介  磁盘分区和格式化完成后,磁盘分区要想能够使用,就需要挂载,在挂载某个分区前需要先建立一个挂载点  挂载:将新的文件系统关联至当前根文件系统  卸载:将某文件系统与当前根文件系统的关 ...

  7. 普通码农和CTO之间的差距

    虚心 学习的第一步是--"我不懂".一个空是水杯才能装水,如果是满的就没有办法装水了."自我肯定"是一种非常难克服的习惯,经常会有朋友看到某个技术或者实现之后不 ...

  8. MySQL 以及 Python 实现排名窗体函数

    大部分数据库都提供了窗体函数.比方RANK,ROW_NUMBER等等. MySQL 这方面没有直接提供.可是能够变相的实现.我曾经写了row_number 的实现,今天有时间把 rank 的实现贴出来 ...

  9. angularjs 路由 ngRoute tab切换

    <!DOCTYPE HTML> <html ng-app="myApp"> <head> <meta http-equiv="C ...

  10. DC、CDC及CDC的各个子类

      设备描述表是一个包含设备信息的结构体(物理设备如显示器.打印机),MFC中关于图像操作都需要DC来完成.HDC是Windows的一种数据类型,是设备描述句柄:CDC是MFC封装的Windows 设 ...