常量和变量
常量:值一旦设定就不能改变,使用 let
声明变量
let a = 3;//声明一个名字是 a 的新常量,并给它一个值 `3`
变量:值可以随意变更,使用 var
声明变量
var currentA = 0;//声明一个名字是currentA 的变量并将它的值初始化为 0 。
你可以在一行中声明多个常量或者多个变量,用逗号隔开:
var x = 0.0, y = 0.0, z = 0.0
注意:如果你的代码中有不需要改变的值,请使用 let 关键字将它声明为常量。只将需要改变的值声明为变量。
类型标注
当你声明常量或者变量的时候可以加上类型标注(type annotation),说明常量或者变量中要存储的值的类 型。如果要添加类型标注,需要在常量或者变量名后面加上一个冒号和空格,然后加上类型名称。
var welcomeMessage: String = "Bonjour!";//表示这个变量可以存储 String 类型的值,可以了解为声明一个类型为 String ,名字为 welcomeMessage 的变量。”
你可以在一行中定义多个同样类型的变量,用逗号分割,并在最后一个变量名之后添加类型标注
var red, green, blue: Double
注意:常量与变量名不能包含数学符号,箭头,保留的(或者非法的)Unicode 码位,连线与制表符。也不能以数字开 头,但是可以在常量与变量名的其他地方包含数字。一旦你将常量或者变量声明为确定的类型,你就不能使用相同的名字再次进行声明,或者改变其存储的值的类型。同时,你也不能将常量与变量进行互转
语句输出
你可以用print(_:separator:terminator:)
函数来输出当前常量或变量的值:
print(friendlyWelcome)
// 输出 "Bonjour!"
字符串拼接
Swift 用字符串插值(string interpolation)的方式把常量名或者变量名当做占位符加入到长字符串中,Swift 会用当前常量或变量的值替换这些占位符。将常量或变量名放入圆括号中,并在开括号前使用反斜杠将其转义:
print("The current value of friendlyWelcome is \(friendlyWelcome)") // 输出 "The current value of friendlyWelcome is Bonjour!
或者
print("你的高考总分为" + welcomeMessage );
注释
单行注释以双正斜杠( // )作为起始标记:
// 这是一个注释
你也可以进行多行注释,其起始标记为单个正斜杠后跟随一个星号( /* ),终止标记为一个星号后跟随单个正斜 杠(*/):
/* 这是一个, 多行注释 */
分号
与其他大部分编程语言不同,Swift 并不强制要求你在每条语句的结尾处使用分号( ;
),当然,你也可以按照 你自己的习惯添加分号。有一种情况下必须要用分号,即你打算在同一行内写多条独立的语句:
let abc = "d"; print(abc) // 输出 "d"
整数
Swift 提供了8,16,32和64位的有符号和无符号整数类型。这些整数类型和 C 语言的命名方式很像,比如8位无 符号整数类型是 UInt8
,32位有符号整数类型是 Int32
。就像 Swift 的其他类型一样,整数类型采用大写命名法。
每个整数类型都有 min
和 max
2个 属性来获取对应类型的最小值和最大值;
let minA = UInt8.min // minA 为 0,是 UInt8 类型 let maxB = UInt8.max // maxB 为 255,是 UInt8 类型
浮点数
浮点数是有小数部分的数字,比如 3.14159 ,0.1 和 -273.15。
浮点类型比整数类型表示的范围更大,可以存储比Int
类型更大或者更小的数字。Swift 提供了两种有符号浮 点数类型:Double表示64位浮点数。当你需要存储很大或者很高精度的浮点数时请使用此类型。 Float表示32位浮点数。精度要求不高的话可以使用此类型
。
注意:
Double
精确度很高,至少有15位数字,而Float
只有6位数字。选择哪个类型取决于你的代码需要处理的值的
范围,在两种类型都匹配的情况下,将优先选择Double
。
类型安全和类型推断
Swift 是一个类型安全(type safe)的语言。类型安全的语言可以让你清楚地知道代码要处理的值的类型。如果
你的代码需要一个 String
,你绝对不可能不小心传进去一个 Int
。
当你要处理不同类型的值时,类型检查可以帮你避免错误。然而,这并不是说你每次声明常量和变量的时候都需 要显式指定类型。如果你没有显式指定类型,Swift 会使用类型推断(type inference)来选择合适的类型。有 了类型推断,编译器可以在编译代码的时候自动推断出表达式的类型。原理很简单,只要检查你赋的值即可。
因为有类型推断,和 C 或者 Objective-C 比起来 Swift 很少需要声明类型。常量和变量虽然需要明确类型,但 是大部分工作并不需要你自己来完成。
当你声明常量或者变量并赋初值的时候类型推断非常有用。当你在声明常量或者变量的时候赋给它们一个字面 量(literal value 或 literal)即可触发类型推断。
let meaningOfLife = 42// meaningOfLife 会被推测为 Int 类型
let pi = 3.14159// pi 会被推测为 Double 类型
let anotherPi = 3 + 0.14159//如果表达式中同时出现了整数和浮点数,会被推断为`Double` anotherPi 会被推测为 Double 类型