本节书摘来自异步社区《Swift入门经典(第2版)》一书中的第2章,第2.2节,作者:【美】BJ Miller(BJ 米勒)著,更多章节内容可以访问云栖社区“异步社区”公众号查看
2.2 Swift中的变量
可以看到,由于应用具有并且必须具有动态性,只使用常量将无法实现复杂的应用。Swift提供了一种同样简单的方式,像声明常量那样声明变量,只是使用var导引符。顾名思义,变量可以改变,它们本质上是可变(mutable)的。这意味着无论何时使用“=”运算符(称为赋值运算符(assignment operator)),都可以改变变量的值(第3章将讨论运算符)。
当你知道数据可以并且将会改变时,变量将特别有用。例如,如果你正在构建一个计步器应用,你知道对于你或者你的应用的用户所走过的每一步(假定用户具有一个设备,它带有M系列的运动协处理器),步数都会增加。这个变量将利用到每个时刻所走过的步数进行更新。
给常量和变量赋值
使用playground或Swift REPL(选择你更熟悉的一种工具),尝试下面这些步骤,以表现你所掌握的关于常量和变量的知识:
(1)给名为feetPerMile的常量赋值5280。
let feetPerMile = 5280
(2)给名为totalFeet的变量赋值0,只用于初始化它。
var totalFeet = 0
(3)设想你步行了3英里,并且你想知道自己行进了多少英尺。现在,使totalFeet等于feetPerMile中存储的数值的3倍。
totalFeet = 3 * feetPerMile
(4)假设由于标准的分歧,把每英里包含的英尺数的全球标准从5280改为6000。尝试把feetPerMile改为6000。
feetPerMile = 6000
你将得到一个尝试更改feetPerMile的错误,不是吗?
在上一个试验中,你注意到自己可以声明一个常量feetPerMile,并且给它提供了一个初始值(5280),这没有什么问题。你还声明了一个变量totalFeet,它具有一个初始值(0),这同样很容易。然后,你更改了变量的值,并且Swift认为这是正确的。现在,当你尝试更改feetPerMile的值时,将接收到一个错误,指示你尝试更改常量let值。这个示例说明了Swift的编译器怎样帮助保持代码安全,避免有关可变性的问题。
在命名常量和变量时,要记住几件事。在常量和变量的名称中,可以使用任何Unicode字符,只不过它们不能以数字开头,并且必须以字母结尾。如果需要以一种不同的语言表达名称,但是利用英语键盘不那么容易做到,那么这就是一个优秀的特性。名称还不能包含标点符号和特殊字符,因为它们通常是为关键字或运算符预留的。现在还可以为常量或变量的名称使用表情符号,比如把鸡脸字符设置为字符串“chicken”,并且Swift推断鸡脸Unicode字符是String类型。虽然这样的字符似乎比较可爱,但是许多程序员倾向于避免为名称使用表情符号或其他特殊字符,因为在输入时这将使得难以引用那些变量和常量,并且你将不得不暂停自己的思路,以搜寻特定的Unicode字符或键组合。
既然我们已经讨论了常量和变量,现在就让我们学习Swift的数据类型。