首页 » iOS编程基础:Swift、Xcode和Cocoa入门指南 » iOS编程基础:Swift、Xcode和Cocoa入门指南全文在线阅读

《iOS编程基础:Swift、Xcode和Cocoa入门指南》1.4 变量

关灯直达底部

变量指的是对象的名字。从技术角度来说,它指向一个对象;它是一个对象引用。从非技术角度来看,你可以将其看作存放对象的一个盒子。对象可能会发生变化,或是盒子中的对象被其他对象所替换,但名字却不会发生变化。

在Swift中,不存在没有名字的变量,所有变量都必须要声明。如果需要为某个东西起个名字,那么你要说“我在创建一个名字”。可以通过两个关键字实现这一点:let或是var。在Swift中,声明通常会伴随着初始化一起——使用等号为变量赋值,并作为声明的一部分。下面这些都是变量声明(与初始化):


let one = 1var two = 2  

如果名字存在,那么你就可以使用它了。比如,我们可以将two中的值修改为one中的:


let one = 1var two = 2two = one  

上面最后一行代码使用了前两行所声明的名字one与two:等号右侧的名字one仅仅用于引用盒子中的值(即1);不过,等号左侧的名字two则用于替换掉盒子中的值。这种语句(变量名位于等号左侧)叫作赋值,等号叫作赋值运算符。等号并不是相等性断言,这与数学公式中的等号不同;它是一个命令,表示“获取右侧的值,然后使用它替换掉左侧的值”。

变量的这两种声明方式是不同的,通过let声明的名字是不能替换掉其对象的。通过let声明的变量是个常量;其值只能被赋予一次并且不再变化。如下代码是无法编译通过的:


let one = 1var two = 2one = two // compile error  

可以通过var声明一个名字来实现最大的灵活性,不过如果知道永远不会改变变量的初始值,那么最好使用let,这样Swift在处理时效率会更高;事实上,如果本可以使用let,但你却使用了var,那么Swift编译器就会提示你,并且可以帮你修改。

变量也是有类型的,其类型是在变量声明时创建的,而且永远不会改变。比如,如下代码是无法编译通过的:


var two = 2two = "hello" // compile error  

一旦声明two并将其初始化为2,那么它就是一个数字了(确切地说是一个Int),而且一直都将如此。你可以将其替换为1,因为1也是个Int,但不能将其值替换为“hello”,因为"hello"是个字符串(确切地说是一个String),而String并非Int。

变量有自己的生命——更准确地说是有自己的生命周期。只要变量存在,那么它就会一直保存其值。这样,变量不仅是一种便于命名的手段,还是一种保存值的方式。稍后将会对此做详细介绍。

根据约定,如String或Int(或Dog、Cat)等类型名要以大写字母开头;变量名则以小写字母开头,请不要违背该约定。如果违背了,那么你的代码虽然还是可以编译通过并正常运行,但其他人却不太容易理解。