本节大概花你2分钟。
声明
常量的值一旦设定就不能改变,用let
来声明常量。
变量的值可以随意更改,用var
来声明变量。
简单点说就是如果你的代码中有不需要改变的值,请使用let
关键字将它声明为常量。只将需要改变的值用var
声明为变量。
可以在一行中声明多个常量或者多个变量,用逗号隔开,例如:
var x = 0.0, y = 0.0, z = 0.0
在 Swift 开发中可以同时定义多个变量,下面定义中所有变量都是 Double 类型:
var a,b,c:Double
这种声明在 REPL 模式中会出错,你需要为它们赋值初始化才能下一步,不过一般开发并不会跑到 REPL 模式中就是了。
类型标注
和其他语言一样类型标注可以说明常量或者变量中要存储的值的类型。
例如字符串类型的变量:
var testMessage: String
现在我们可以给这个变量赋值了:
testMessage = "Hello"
同样,我们可以在一行中定义多个同样类型的变量,用逗号分割,并在最后一个变量名之后添加类型标注:
var red, green, blue: Double
但是话又说回来,就算你在声明常量或者变量的时候没有指定类型也没关系,因为Swift会自己判断,只要你赋了一个初始值,Swift可以自动推断出这个常量或者变量的类型。
也就是说你只管确定这是常量还是变量就可以了。
如果你想了解这是怎么回事请参考类型安全和类型推断,但对于初学者而言我们暂时避开这个问题,后面我们会再和这些内容遇见的。
常量和变量的命名
Swift可以使用Unicode字符命名常量和变量:
let π = 3.14159
let 你好 = "你好世界"
let 🐮 = "dogcow"
比如像上面这样的做法都是可以的,你甚至可以用一个滑稽表情作为常量或变量的名字。
虽然看起来可以乱取名字,但实际上还是有限制的,比如你不能使用数学符号、箭头、保留的或者非法的Unicode码位、连线与制表符等来为常量与变量命名。通俗地讲就是不要出现数学运算符号、箭头这种乱七八糟的东西。
也不能以数字开头,但是可以在常量与变量名的其他地方包含数字。因为如果出现了以数字开头为名的常量与变量会导致混乱啊,例如你定义一个常量let 2333=6666
,然后用2333
运算,天知道你这是表示2333
还是6666
。
输出常量和变量
好了,我们终于可以向屏幕输出点什么了,先定义一个变量:
var myAction = "_(:з」∠)_"
print(myAction)
输出的自然是_(:з」∠)_
这个表情,没什么问题吧。print()
是一个用来输出一个或多个值到适当输出区的全局函数。就当是内置的打印机吧~
除了直接输出整个变量还可以把变量插入到某个地方:
/* 这是一个
多行的
注释。 */
var myName = "猴子" // 定义名字为猴子
print(myName)
print("这是写给\(myName)看的Swift入门教程。")
// 输出"这是写给猴子看的Swift入门教程。"
Swift用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义。
哦,对了,其实上面的例子中我还告诉了大家怎么注释。
还有最后一点我们就可以结束这课了,Swift对于每句编程语言后面分号的书写并不严格,就是爱写不写。
但是如果你在同一行写两句编程语句当然要加分号了。
let cat = "🐱"; print(cat)
好了到此结束,下一节是基本数据类型。
练习题
1. 下面哪些不是Swift合法标识符:
A. 2variable
B. variable2
C. _whatavariable
D. _3_
答案:A
解释:不能是数字开头。
2.下面哪些不是Swift关键字的:
A.If B.then
C.Goto D.while
E.Case F.__COLUMN__
G.Where H.Class
答案:BH
解释:其中F是关键字,这种大写加下划线的关键字还有:COLUMN、FILE、FUNCTION和LINE。Class不属于关键字,是因为首字母大写了,类的关键字是class,首字母不大写。
3. 下列代码,哪行有错误:
let _Hello1 = "Hello"
_Hello1 = "Hello, World" A
print(_Hello1) B
var _Hello2 = "Hello"
_Hello2 = "Hello, World" C
print(_Hello2) D
答案:A
解释:A
有编译错误,_Hello1是常量,不能二次赋值。
4. 下面有关Swift注释使用正确的是?
A.
if x > 1 {
//注释1
} else {
return false //注释2
}
B.
//let _Hello1 = "Hello"
//_Hello1 = "Hello, World"
//print(_Hello1)
C.
/*
let _Hello1 = "Hello"
_Hello1 = "Hello, World"
println(_Hello1)
*/
D.
/**
let _Hello1 = "Hello"
_Hello1 = "Hello, World"
println(_Hello1)
*/
答案:ABCD
解释:以上都是正确的,除此之外提醒一点,Swift是可以在注释中嵌套注释的,类似:
/*
Xxxx
/* xxxx */
Xxxx
*/