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 介绍 ...
随机推荐
- Filter 起航 编程式配置 压缩响应 日志过滤器
[编程式配置]可以用web.xml配置替换 @WebListenerpublic class FilterListenerConfigurator implements ServletContextL ...
- tensorflow faster rcnn 代码分析一 demo.py
os.environ["CUDA_VISIBLE_DEVICES"]=2 # 设置使用的GPU tfconfig=tf.ConfigProto(allow_soft_placeme ...
- PHPcms 缓存的读取和设置
https://blog.csdn.net/huobobo124/article/details/76912632 1.PHPcms设置了保存和读取缓存的方法,其实现方法存储在PHPcms/lib/f ...
- luogu P4774 [NOI2018]屠龙勇士
传送门 这题真的是送温暖啊qwq,而且最重要的是yyb巨佬在Day2前几天正好学了crt,还写了博客 然而我都没仔细看,结果我就同步赛打铁了QAQ 我们可以先根据题意,使用set维护,求出每次的攻击力 ...
- luogu P2470 [SCOI2007]压缩
传送门 dalao们怎么状态都设的两维以上啊?qwq 完全可以一维状态的说 设\(f[i]\)为前缀i的答案,转移就枚举从前面哪里转移过来\(f[i]=min(f[j-1]+w(j,i))(j\in ...
- 前端面试(二):N轮面试
一面 在一面中要掌握什么技巧,主要考察前端开发的基础知识 1.面试技巧.页面布局类 页面布局小结: 语义化掌握到位 页面布局理解深刻 CSS基础知识扎实 思维灵活且积极上进 代码书写规范 2.CSS盒 ...
- Challenge Create a Launch Pad
在头文件中定义网格体组件和重叠组件 UPROPERTY(VisibleAnywhere,Category="Components") UStaticMeshComponent* M ...
- Service生命周期
https://www.cnblogs.com/huihuizhang/p/7623760.html (1)Service是单例的,只要没有destroy,多次startService或bindSer ...
- Docker安装MySQL
查看镜像 docker search mysql 拉取镜像 docker pull mysql:5.7 说明:5.7为指定下载的版本,可以更换其他版本 运行镜像 docker run --name m ...
- maven坐标的获取
网址:https://mvnrepository.com 网站上可以搜索具体的组织或项目关键字,之后复制对应的坐标到pom.xml中.如: