当前位置: 首页 > news >正文

《Swift入门经典(第2版)》——第2章 学习Swift的基本数据类型 2.1Swift中的常量...

本节书摘来自异步社区《Swift入门经典(第2版)》一书中的第2章,第2.1节,作者:【美】BJ Miller(BJ 米勒)著,更多章节内容可以访问云栖社区“异步社区”公众号查看

第2章 学习Swift的基本数据类型

在本章中你将学到:

  • 了解常量与变量之间的区别;
  • 怎样声明和使用常量与变量;
  • Swift怎样使用类型推断,实现自动类型设置;
  • Swift的常用数据类型;
  • 怎样利用类型注释特别声明数据类型。

第1章介绍了设置Xcode和Swift REPL环境,并且展示了Xcode布局。我们还研究了Swift代码的一些简短示例,说明了怎样使用这些环境来帮助你编码,甚至测试你的代码。在代码中声明常量以及把不同的数据类型(比如数字42或字符串"Hello, playground")分配给它们时,简单使用了Swift关键字let。本章更详细地探讨了Swift怎样使用var和let关键字(称为导引符(introducer)),还探讨了Swift怎样知道如何处理不同的数据类型。

在Swift中可以用两种基本的方式声明数据类型,它们是常量(constant)和变量(variable),现在就开始探讨它们。

2.1 Swift中的常量

常量用于告诉Swift特定的值不应该或者将不会改变,因此得名“常量”这个术语。它也称为不可变(immutable)的,因为常量不能改变。Swift的编译器会优化用于常量的内存,使代码更好地执行,因为如果Swift知道该内存的大小或内容不会改变,它就可以消除在处理这些值时通常不得不检查的许多潜在的可变性方面。常量还会给程序员提供一张安全保护网,可以阻止意外地重写常量值的内容。

思考一下常量何时是必要的。例如,假定你正在编写一个计算距离的应用,并且你知道1英里相当于5280英尺。可以建立一个名为feetPerMile的常量,并把它的值设置为5280。这样,无论何时需要在代码中引用那个值,都可以在计算中使用feetPerMile。

只能给常量赋值一次。不需要在定义常量时就给它赋值,但是在赋予它一个值之后,它就不能改变了。由于常量的不可变性,如果尝试更改常量的值,Xcode将发出一个编译器错误,指出不能给let赋值。现在,让我们看看变量。

 注意:何时使用常量

由于Swift是一种安全的语言,因此建议的最佳实践通常是根据需要结合使用常量与let导引符。通过阻止意外的数据操作,可以极大地提高安全性,甚至可以帮助Swift的编译器提高性能。不过,仅当你知道常量的值永远不会改变时,才应该使用常量。

相关文章:

  • 互联网世界的“人工智能”——探秘“深度学习”的前世今生
  • GOOGLE招聘之行为准则
  • 中国信通院重磅发布大数据关键技术专利态势报告(全文38页下载)
  • Linux学习134 Unit 7
  • python3的文件读取问题
  • 团队视频内容和链接
  • 新生入学V3.0颗粒归仓
  • LVM故障导致RHCS启动故障
  • Java中套接字的理解
  • Redis开发运维实践专题功能之发布订阅
  • 前端素材库
  • 初学者vue脚手架的搭建(哈哈 第一次写 不好的地方请指正)
  • spring 整合多个配置文件说明
  • 如何截取字符串?
  • angular factory service provider
  • Angular 响应式表单 基础例子
  • ES2017异步函数现已正式可用
  • Hibernate【inverse和cascade属性】知识要点
  • JavaScript DOM 10 - 滚动
  • js中的正则表达式入门
  • Magento 1.x 中文订单打印乱码
  • Python 基础起步 (十) 什么叫函数?
  • React16时代,该用什么姿势写 React ?
  • storm drpc实例
  • Vim 折腾记
  • Vue源码解析(二)Vue的双向绑定讲解及实现
  • 浮动相关
  • 解决jsp引用其他项目时出现的 cannot be resolved to a type错误
  • 开年巨制!千人千面回放技术让你“看到”Flutter用户侧问题
  • 如何在GitHub上创建个人博客
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • ​人工智能书单(数学基础篇)
  • #if 1...#endif
  • #Z2294. 打印树的直径
  • (12)Hive调优——count distinct去重优化
  • (2)STM32单片机上位机
  • (多级缓存)缓存同步
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (三)Honghu Cloud云架构一定时调度平台
  • (译) 函数式 JS #1:简介
  • (最完美)小米手机6X的Usb调试模式在哪里打开的流程
  • .[hudsonL@cock.li].mkp勒索病毒数据怎么处理|数据解密恢复
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET Conf 2023 回顾 – 庆祝社区、创新和 .NET 8 的发布
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .net 提取注释生成API文档 帮助文档
  • .Net+SQL Server企业应用性能优化笔记4——精确查找瓶颈
  • .NET与 java通用的3DES加密解密方法
  • @EnableAsync和@Async开始异步任务支持
  • [ C++ ] STL priority_queue(优先级队列)使用及其底层模拟实现,容器适配器,deque(双端队列)原理了解
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [14]内置对象
  • [2544]最短路 (两种算法)(HDU)
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务