Swift学习之-常量与变量

序言

常量和变量把名字和特定类型的值关联在一起;(Swift已经去掉指针的概念)

注意:常量一经设置好就不能再改变,变量则可以进行修改;

声明常量和变量

常量和变量在使用之前必须被声明,使用关键字let来声明常量,关键字var来声明变量.
示例:

1
2
let A = 10 
var B = 0

代码可以读作:
“声明一个就做A的新常量,并设置值为10.然后声明一个B的变量,并且给它一个初始值为0.”
常量A一经声明,就不能再次改变,修改的话,编译会报错;变量B则可以进行修改;

当然,你可以在一行中声明多个变量或者常量,用逗号隔开:

1
var x = 0,y = 1,z = 2

注意:在你的代码中,如果存储的值不会改变,请用关键字let来声明一个常量.只有存储会改变的值的时候才使用变量.

类型标注

你可以在声明一个常量或者变量的时候,标注它能够进行存储的类型.
如下:

1
var nickName:String

声明中的“:”的意思是“是…类型”,所以上面的代码可以读作:
“声明了一个叫做nickName的变量,它的类型是String”;
这意味着它可以存储任何String值而不会报错:

1
nickName = "mark"

你也可以在一行中定义多个相关的变量为相同的类型,用逗号分隔,只要在最后加上类型标注就可以了:

1
var red,green,blue:Double

Tips:
实际上,你并不需要经常使用类型标注,如果你在定义一个常量或者变量的时候设定一个初始值,那么Swift本身可以根据类型安全和类型推断(下面会讲到)中描述那样,可以推断出这个常量或者变量的类型;

命名常量和变量

常量和变量的名字几乎可以使用任何字符,甚至包括Unicode字符:

1
2
3
let π = 3.14159  
let 你好 = "你好,world!"
let 🤕 = "back"

当然,常量和变量的名字不能包含:

1,空白字符;
2,数学符号;
3,箭头;
4,保留的或者无效的Unicode码位;
5,连线和制表符;
6,不能以数字开头;

  一旦你声明了一个确定类型的常量或者变量,就不能使用相同的名字再次进行声明,也不能让他改存其他类型的值,常量和变量之间也不能互换;

注意:
如果你需要用Swift保留的关键字给常量或变量命名,可以使用反引号`let`来进行命名;

输出常量和变量

你可以使用print(<#T##items: Any…##Any#>)函数来打印常量和变量;
替换了oc中NSLog()格式化输出;

1
2
print("mark")
//输出“mark”

print函数可以输出不同类型的常量或者变量,用(,)隔开;
如:

1
2
print(234,"mark",2.67)
//输出“234,mark,2.67”

Swift 使用字符串插值的方式把常量名或者变量名当做占位符加入到更长的字符串中,然后让Swift用常量或者变量的当前值替换这些占位符.
将常量或变量名放入圆括号中并在括号前使用反斜杠\()将其转义:

1
2
3
let place = "USA"  
print("Are you from \(place)?")
//输出"Are you from USA?"

Tips:你可以用转义方式将字符串插入另外一个字符串中,从而生成一个新的字符串;

类型安全和类型推断

Swift是一门类型安全的语言.

1,类型安全的语言可以让你清楚知道代码可以处理的值的类型.如果你的一部分代码期望获得String,那你就不该错误的传给它一个Int类型.

2,因为Swift是类型安全的,他在编译代码的时候会进行类型检查,任何不匹配的类型都会标记为错误.这会帮助你在开发阶段更早的发现并修复错误!

3,当你操作不同类型的值时,类型检查能帮助你避免错误.当然,这并不意味着你得为每一个常量或者变量声明一个特定的类型.如果你没有为所需要的值进行类型声明,Swift会使用类型推断的功能来推断出合适的类型.通过检查你给变量赋的值,类型推断能够在编译阶段自动推断出值得类型.

4,在你为一个变量或常量设定一个初始值的时候,类型推断就显得更加有用.它通常在你声明一个变量或常量同时设置一个初始的字面量(文本)时就已经完成.(字面量就是会直接出现在你代码中的值,比如下边代码中的 42 和 3.14159)

1
2
3
4
5
let middleWidth = 42
//表示middleWidth 是 Int类型

let pi = 3.14
//pi推断的类型是Double.

Swift中对浮点值的推断始终会选择Double而不是Float.

如果你在一个表达式中将整数和浮点数结合起来,Double会从内容中被推断出来.

1
2
let add = 4 + 1.23  
//add 的类型将会是Double

这字面量3没有显式的声明它的类型,但是因为后面有一个浮点类型的字面量,所以这个类型就被推断为Double;

END;