// 下标 可以定义在 类, 结构体, 和 枚举 中, 是访问集合, 列表或 序列中元素的快捷方式, 可以使用下标的索引, 设置 和 获取值, 而不需要再调用对应的存取方法, 举例来说, 用下标访问一个 Array 实例值的元素可以写作  someArray[index], 访问 dictionary 实例中的元素可以写作 someDictionary[key]

// 一个类型 可以定义多个下标, 通过不同索引类型进行重载, 下标不限于一维, 你可以定义具有多个入参的下标满足自定义类型的需求

// 下标语法

// 下标允许你通过在实例名称后面的方括号中传入一个或者多个 索引值 对实例进行存取, 语法类似于实例方法语法 和 计算型语法的混合, 与定义实例方法类似, 定义下包使用 subscript 关键字, 指定一个 或 多个输入参数和返回类型, 与实例方法不同的是, 下标可以设定为 读写 或 只读, 这种行为由 getter 和 setter 实现, 有点类似于 计算属性

struct TimesTable{

let multiplier: Int

subscript (index: Int) -> Int{

return multiplier * index

}

}

let threeTimesTable = TimesTable(multiplier:3)

print("six times three is \(threeTimesTable[6])")

// 在上栗中, 创建了一个 TimesTable 实例, 用来表示整数 3 的 乘法表, 数值 3 被传递给结构体的构造函数, 作为实例成员 multiplier 的值

// 下标用法

// 下标的确切含义取决于使用场景, 下标经常作为访问集合, 列表 或 序列中元素的快捷方式, 你可以针对自己的特定的类 或者 结构体的 功能自由的以最恰当的方式 实现下标

// 例如: Swift 的  Dictionary 类型实现 下标用于对其实力中存储的值进行存取操作, 为字典取值时, 在下标中使用 和 字典的 键 类型相同 的值, 并把一个子弟那的值类型相同的值赋给这个下标

var numberofLegs = ["spider": 8,"ant": 6, "cat": 4]

numberofLegs["bird"] = 2

// 上例定义一个名为numberOfLegs的变量,并用一个包含三对键值的字典字面量初始化它。numberOfLegs字典的类型被推断为[String: Int]。字典创建完成后,该例子通过下标将String类型的键bird和Int类型的值2添加到字典中。

// 注意 : Swift 中的 dictionary 类型的下标接受并返回可选类型的值, 上栗中的 numberOflegs 字典通过下标返回的是一个 Int? 或者是 可选的 Int,做所以如此, 是因为不是每个键都有对应的值, 同时这也提供了一种通过键删除对应值的方式, 只需要将对应的值赋值 为 nil 即可

// 下标选项

// 下标可以接受任意数量的入参, 并且这些入参可以是任意类型, 下标的返回值也可以是任意类型, 下标可以使用变量参数和可变参数, 但不能使用输入输出参数, 也不能给参数设置默认值

// 一个类 或 结构体 可以根据自身需要提供多个下标实现, 使用下标时将通过入参的数量 和 类型进行区分, 自动匹配合适的下标,  这就是下标的重载

swift 学习- 13 -- 下标的更多相关文章

  1. Swift学习目录

    本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理.如对原版感兴趣,可以直接单击链接阅读和学习. 第一部分 基础篇 1.基本 ...

  2. Swift学习之常用UI的使用

    Swift学习之常用UI的使用 最近笔者在开始学习苹果最新的编程语言,因为笔者认为,苹果既然出了这门语言就绝对不会放弃,除非苹果倒闭了(当然这里知识一个玩笑). 所以在不久的将来,swift绝对是iO ...

  3. 【swift学习笔记】二.页面转跳数据回传

    上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...

  4. 今天开始Swift学习

    今天开始Swift学习  在此记录笔记  以备之后查阅! allenhuang

  5. iOS ---Swift学习与复习

    swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...

  6. JavaScript学习13 JavaScript中的继承

    JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...

  7. 12套swift学习资源分享

    虽然objective-c编程语言在过去很长一段时间都是iOS应用开发的基础语言,且很多iOS开发者对其也深爱有佳,但是随着swift编程语言的问世,迅速发展为开发者追捧的语言.且今年伴随着swift ...

  8. Swift学习笔记六

    集合类型(Collection Type) Swift提供三种主要的集合类型:数组(array).集合(set).字典(dictionary).数组是有序的值序列,集合是无序的值序列,字典是无序的键值 ...

  9. [转]swift 学习资源 大集合

    今天看到了一个swift的学习网站,里面收集了很多学习资源 [转自http://blog.csdn.net/sqc3375177/article/details/29206779] Swift 介绍 ...

随机推荐

  1. luogu 1640 连续攻击游戏

    二分图匹配,将需要进行的编号(1-10000)和物件进行匹配,而非编号之间,编号对应物品 #include<bits/stdc++.h> using namespace std; ; ; ...

  2. C#水晶报表教程

    http://apps.hi.baidu.com/share/detail/24298108 水晶报表是一个功能强大的报表工具,现在已经被Microsoft Visual Studio 2005(下文 ...

  3. oracle rman备份

    rman 登录到cmd 打开cmd 输入 rman connect target jhpt/1@orcl C:\Documents and Settings\Administrator>rman ...

  4. 理解JS的执行环境

    执行环境(Execution context,EC)或执行上下文,是JS中一个极为重要的概念 EC的组成 当JavaScript代码执行的时候,会进入不同的执行上下文,这些执行上下文会构成了一个执行上 ...

  5. 迅为-IMX6开发板十层PCB制造,24小时开机测试,满负荷测试运行俩天,没有死机

    迅为-IMX6开发板——工业主板的优势 1.元器件 IMX6工业主板选料,选用经过长时间.高要求验证元器件,保证产品在复杂条件下,耐高温.抗潮湿等工业场合的需求. 2.PCB设计 IMX6工业主板采用 ...

  6. 原型理解:prototype

    这一系列的链接的原型对象就是原型链(prototype chain) 1.所有对象都有同一个原型对象,都可通过Object.prototype获得对象引用 2.new出来的构造函数对象原型就是构造函数 ...

  7. 解决shell脚本中 telnet ap自动输入用户名和密码以及回车符

    #!/bin/bash function change_ap { ( s=`stty -g`; str=$"\n" sstr=$(echo -e $str) stty raw -e ...

  8. linux系统下python升级安装

    1.安装gcc gcc-c++ yum install -y gcc gcc-c++ #提前检查是否安装 2.下载python3.5.2安装包 cd /usr/local/src/ wget http ...

  9. 前端向服务器请求数据并渲染的方式(ajax/jQuery/axios/vue)

    原理: jQuery的ajax请求:complete函数一般无论服务器有无数据返回都会显示(成功或者失败都显示数据): return result

  10. (1)Java数据结构--图文并茂-分析优缺点

    转:常见Java数据结构&优缺点 - /画家/ - 博客园http://www.cnblogs.com/earl-yongchang/p/5639161.html 图片也是引用过来的,没有重新 ...