赵走x博客
网站访问量:151531
首页
书籍
软件
工具
古诗词
搜索
登录
7、数学运算符
6、字符串
5、类型
4、常量
3、声明的威力
2、开始探索 Swift
1、Swift简介
3、声明的威力
资源编号:76615
Switch基础教程第二版
书籍
热度:87
如果回想一下中学的代数课,你肯定还记得变量是表示某种量的占位符。当你说x等于12或y等于42时,实际上是在声明,将某个变量声明为特定的数字。 Swift让代数课老师自豪,它也能够声明变量,但使用的语法稍有不同。请输入如下内容: ``` 4> var x = 12 x: Int = 12 5> ``` 你刚才使用关键字var声明了第一个变量。第4行让Swift将变量x声明为12,Swift完全按你的 指示做,将变量x声明为12。不仅如此,Swift还更进一步:将x声明为值为12的Int变量。 Int是什么呢?它是integer的缩写,表示不带小数部分的整数。通过像前面那样输入12,让 Swift对被赋值的变量做出了推断:x是一个值为12的整数变量。在响应中,Swift使用表示法x: Int 指出了这个变量的类型。稍后将更详细地介绍这种表示法。 前面不费吹灰之力就声明了一个名为x的变量,下面将问题再弄得复杂一些,声明第2个变量: ``` 5> var y = 42.0 y: Double = 42 6> ``` 这里添加了小数点和0,这种表示法告诉Swift,y是一个Double变量。Double表示带小数部分 的数字,不用于表示整数,而用于表示实数(也叫浮点数)。 >Float还是Double? 如果你使用过其他编程语言,可能熟悉浮点数,知道它们分两种:Float和Double。Float通常长32位,而Double通常长64位(精度是Float的两倍)。除Double类型外,Swift也支持Float类型。然而,鉴于现代计算机体系结构是64位的,Swift默认使用Double类型来表示浮点数,而在本书的示例中,总是使用Double类型。 下面简单地复习一下。在前面的两种情况下,Swift都给变量指定了类型。变量x和y的类型分 别是Int和Double,只要不重新启动REPL,这种差别将始终存在。 声明变量后,就可将不同的值赋给它。例如,前面将数字12赋给了变量x。将不同的值赋给 变量很简单,只需使用等号即可: ``` 6> x = 28 7> ``` 注意到将数字28赋给变量x时,Swift没有任何反应。下面核实一下这个新值是否赋给了变量x: ``` 7> print(x) 28 ``` 与预期的一样,x存储的是最后一次赋给它的值:28。 还可以将一个变量的值赋给另一个变量。为核实这一点,下面将变量y 赋给变量z 。你猜结果 将如何呢? ``` 8> x = y error: repl.swift:6:3: error: cannot assign value of type 'Double' to type 'Int' x=y ^ Int( ) 8> ``` Swift显示的错误消息非常详细,提供了错误所在的行号和列号(这里是第8行和第5列),并 使用冒号分隔它们。在错误消息后面,还显示了相应代码行的内容,并用脱字符指出了错误的位 置。最后,由于存在错误,在接下来显示的提示符中没有将数字增加到9,而再次使用以前的数 字8。(这相当于Swift在对你说:“哥们,别紧张,再试试。”) >变量名包含什么? 在Swift中,变量名可以用除数字外的任何字符打头。前面使用的是单字母变量名,但应使用更长、意义更丰富的变量名,以提高代码的可读性。 这里到底出了什么问题呢?很简单,你试图将类型为Double的变量y赋给类型为Int的变量x, 这种赋值违反了Swift的类型规则。稍后将更详细地介绍类型,现在来看看能否规避这种规则。 假设你一根筋,就是要将y的值赋给x,即便它们的类型不同。你完全可以达到目的,但需要 做些“说服”工作。前面说过,x的类型为Int,而y的类型为Double;考虑到这一点后,可输入 如下语句: ``` 8> x = Int(y) 9> print(x) 42 10> ``` 经过一番“说服”后,赋值成功了。个中原因是什么呢? 第8行将变量y的Double值“转换”成了变量x的类型。只要进行显式转换,Swift就允许这样 赋值。稍后将更详细地讨论类型转换。 保险起见,使用命令print显示了变量x的值。与预期的一样,现在变量x的值为整数42。