swift 学习- 13 -- 下标
// 下标 可以定义在 类, 结构体, 和 枚举 中, 是访问集合, 列表或 序列中元素的快捷方式, 可以使用下标的索引, 设置 和 获取值, 而不需要再调用对应的存取方法, 举例来说, 用下标访问一个 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 -- 下标的更多相关文章
- Swift学习目录
本学习基于苹果官方Swift学习材料,保留了原版90%左右的内容(一些项目开发中基本不用的知识点没有整理),并根据理解进行整理.如对原版感兴趣,可以直接单击链接阅读和学习. 第一部分 基础篇 1.基本 ...
- Swift学习之常用UI的使用
Swift学习之常用UI的使用 最近笔者在开始学习苹果最新的编程语言,因为笔者认为,苹果既然出了这门语言就绝对不会放弃,除非苹果倒闭了(当然这里知识一个玩笑). 所以在不久的将来,swift绝对是iO ...
- 【swift学习笔记】二.页面转跳数据回传
上一篇我们介绍了页面转跳:[swift学习笔记]一.页面转跳的条件判断和传值 这一篇说一下如何把数据回传回父页面,如下图所示,这个例子很简单,只是把传过去的数据加上了"回传"两个字 ...
- 今天开始Swift学习
今天开始Swift学习 在此记录笔记 以备之后查阅! allenhuang
- iOS ---Swift学习与复习
swift中文网 http://www.swiftv.cn http://swifter.tips/ http://objccn.io/ http://www.swiftmi.com/code4swi ...
- JavaScript学习13 JavaScript中的继承
JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式 ...
- 12套swift学习资源分享
虽然objective-c编程语言在过去很长一段时间都是iOS应用开发的基础语言,且很多iOS开发者对其也深爱有佳,但是随着swift编程语言的问世,迅速发展为开发者追捧的语言.且今年伴随着swift ...
- Swift学习笔记六
集合类型(Collection Type) Swift提供三种主要的集合类型:数组(array).集合(set).字典(dictionary).数组是有序的值序列,集合是无序的值序列,字典是无序的键值 ...
- [转]swift 学习资源 大集合
今天看到了一个swift的学习网站,里面收集了很多学习资源 [转自http://blog.csdn.net/sqc3375177/article/details/29206779] Swift 介绍 ...
随机推荐
- Inline Route Constraints in ASP.NET Core MVC
原文 ASP.NET MVC5和Web API2的一个新特性是attribute routing, 通过它我们可以使用[Route]来定义路由模板: public class MessagesCont ...
- IDApython教程(一)
IDAPython是IDA的一个功能强大的扩展特性,对外提供了大量的IDA API调用.另外,还能在使用python 脚本语言的过程中获得能力提升,所以我强烈推荐所有的逆向工程师使用它. 然而不幸的是 ...
- Filter 快速开始 异步Servlet 异步请求 AsyncContext 异步线程 异步派发 过滤器拦截
[web.xml] <filter> <filter-name>normalFilter</filter-name> <filter-class>net ...
- iOS: 并发编程的几个知识点
iOS 多线程问题 查阅的大部分资料都是英文的,整理完毕之后,想翻译成中文,却发现很多名字翻译成中文很难表述清楚. 所以直接把整理好的资料发出来,大家就当顺便学习学习英语. 1. Thread Saf ...
- java时间计算
- Python 数据分析1
本节概要 基础环境 ipython基础 前言 这是18年的第一篇blog,因为boss对于我的工作上的一些期望,需要着手做一些数据分析的工作,所以开始撰写这个系列的blog.分类的内的主要内容基本都是 ...
- AspectJ使用的遇到的坑
1.导入包,但不是使用,会导致R文件错误 apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply pl ...
- Python概念(八)字符串格式化:%和.format
https://www.cnblogs.com/nulige/p/6115793.html
- AIDL通信过程中设置死亡代理
关于AIDL的使用参考学习: https://blog.csdn.net/u011240877/article/details/72765136 https://blog.csdn.net/iromk ...
- ROS tf 两个常用的函数
/** \brief Get the transform between two frames by frame ID. * \param target_frame The frame to wh ...