本节书摘来自异步社区《Swift开发实战》一书中的第16章,第16.2节下标脚本语法,作者 李宁,更多章节内容可以访问云栖社区“异步社区”公众号查看

16.2 下标脚本用法
在Swift语言中,根据使用场景的不同,下标脚本也具有不同的含义。通常下标脚本是用来访问集合(collection)、列表(list)或序列(sequence)中元素的快捷方式。开发者可以在自己特定的类或结构体中,灵活地实现下标脚本来提供合适的功能。

例如,Swift 的字典(Dictionary)实现了通过下标脚本来对其实例中存放的值进行存取操作。在下标脚本中使用和字典索引相同类型的值,并且把一个字典值类型的值赋值给这个下标脚本来为字典设值。参见如下所示的演示代码。

var numberOfLegs = ["spider": 8, "ant": 6, "cat": 4]
numberOfLegs["bird"] = 2

通过上述代码定义了一个名为numberOfLegs的变量,并且用一个字典字面量初始化出了包含三对键值的字典实例,numberOfLegs的字典存放值类型被推断为Dictionary。当字典实例创建完成之后,通过下标脚本的方式将整型值2赋值到字典实例的索引为bird的位置中。

在Swift程序中实现字典的附属脚本时,在get部分返回值是Int?,上例中的numberOfLegs字典通过附属脚本返回的是一个Int?,或者说“可选的int”。不是每个字典的索引都能得到一个整型值,对于没有设过值的索引的访问返回的结果就是nil。同样道理,想要从字典实例中删除某个索引下的值,只需要给这个索引赋值为nil即可。

《Swift开发实战》——第16章,第16.2节下标脚本用法相关推荐

  1. 《Swift开发实战》——导读

    本节书摘来自异步社区<Swift开发实战>一书中的目录,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 目 录 内容简介 前 言 第1章 工欲善其事,必 ...

  2. 《Swift开发实战》——第2章,第2.4节函数和闭包

    本节书摘来自异步社区<Swift开发实战>一书中的第2章,第2.4节函数和闭包,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.4 函数和闭包 在本 ...

  3. 《Swift开发实战》——第1章,第1.4节启动iOS 8模拟器

    本节书摘来自异步社区<Swift开发实战>一书中的第1章,第1.4节启动iOS 8模拟器,作者 李宁,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.4 启动i ...

  4. Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序

    Xamarin iOS开发实战第1章使用C#编写第一个iOS应用程序 C#原本是用来编写Windows以及Windows Phone的应用程序.自从Xamarin问世后,C#的作用就发生了很大的变化. ...

  5. 【项目开发实战】第二章——在线商城系统

    系列文章目录 第一章--AI人机对战版五子棋游戏 第二章--在线商城系统 文章目录 系列文章目录 前言 1.项目介绍 2.项目规划分析 2.1 电子商务的简要介绍 2.2 在线博客+商城系统构成模块 ...

  6. DirectX 12 3D游戏开发实战(第一章向量)

    目录 第1章 向量代数 1.1 向量 1.2 长度和单位向量 1.3 点积 1.4 叉积 1.5 点 1.6 利用DirectXMath库进行向量运算 1.7 小结 1.8 练习 第1章 向量代数 向 ...

  7. 《python3网络爬虫开发实战》第一章、开发环境配置-问题汇总

    开发环境: VMware虚拟机 Ubuntu18.04 python3.6 (由于对vi操作水平有限,所以大部分都用的gedit进行文件编辑) 换源: 刚装上系统后换了好几个源,就清华源感觉好使点,别 ...

  8. django web经典模块开发实战——第三章 用Django设计大型电商的类别表

    1 电商类别表的项目功能需求 1.1 使用vue.js在前端开发一个电商导航栏项目 demo1 nodejs的安装 yum install -y nodejs 安装淘宝镜像(贼慢..) npm ins ...

  9. DirectX 12 3D游戏开发实战 (第二章 矩阵代数)

    目录 矩阵代数 2.1 矩阵的定义 2.2 矩阵乘法 2.3 转置矩阵 2.4 单位矩阵 2.5 矩阵的行列式 2.6 伴随矩阵 2.7 逆矩阵 2.8 用DirectXMath库处理矩阵 矩阵代数 ...

最新文章

  1. Spring Boot集成Sharding-jdbc + Mybatis-Plus实现分库分表
  2. 开源代码维护人员大诉苦水,超半正考虑或已经决定放弃
  3. 大数据凉了?No,流式计算浪潮才刚刚开始!
  4. [MATLAB调试笔记]时变循环诊断——[Vx(x)],[Vx(t),Vy(t),Vz(t)],[Ex(x)],[波];[Eng(t)],[Ex(k)],[Ex(x,t)],[logEx(x.t)]
  5. Embedding技术在房产推荐中的应用
  6. mac版sublime 无法下载插件(Vue 代码无高亮问题)
  7. 微软发布.Net Core 3.0 RC1,最终版本定于9月23日
  8. 一篇文章搞懂数据仓库:常用ETL工具、方法
  9. 系统建模、分析、仿真和验证软件工具ModelCodoer
  10. 设计模式笔记--委派
  11. IOS开发之视图和视图控制器
  12. Security log is full,only administrator can log on to fix the problem(安全日志满了)
  13. 笨人学php好学吗_经典学经:笨人学数学的方法
  14. 5类6类7类网线对比_五类网线、六类网线和七类网线有什么区别?如何挑选网线?...
  15. 访问服务器硬盘速度慢,硬盘读取速度变慢 当前传输模式pio的解决方法
  16. linux下的企业级DNS服务器的操作和加速
  17. 火狐浏览器解除端口限制
  18. 读《纳瓦尔宝典》感想
  19. android+源代码加密,震惊!Android 12开发者版源代码泄密
  20. LED驱动芯片AiP650

热门文章

  1. Centos7 Kubernetes1.8+docker容器集群
  2. 关于 jest 测试结果如何在浏览器上显示的问题
  3. 【Nodejs篇一】Node js 简介
  4. ubantu14下vim的配置...
  5. Linux文本三剑客之sed仗剑走天涯
  6. ZH奶酪:Ionic通过angularJS+tabs-item-hide实现自定义隐藏tab
  7. ED/EP系列5《消费指令》
  8. camtasia studio 8.2使用技巧集锦
  9. Javascript的匿名函数与自执行
  10. 清除应用程序所有缓存