一、常量和变量
一行要执行多个语句,一定要分号
变量声明用var
常量声明用let
常量和变量的名字可以是Unicode字符,但是不能包含数学符号,箭头,保留的字符(例如:while)
1. let constVar = 10
2. var tempVar = 11.0
1. let 黄文臣 = "程序员"
2. constVar++ //Wrong constVar是常量
3. tempVar++
4. println(tempVar)//输出Var并且换行
swift是类型安全的语言,编译器会根据变量或者常量初始化的时候去给它分配一个类型
例如:
1. let radius = 1 + 0.06//swift会推断出radius是浮点数Double类型
声明变量或者常量的时候
可以显式声明它的类型
1. var tempVar:String = "1234" 表示tempvar是一个String类型的变量
一般无需这样声明,因为swift突出一个精简,编译器能做的事情,程序员就不要画蛇添足了
备注:println的输出复杂信息
1. println("The current output is \(tempVar)")
二、注释
和C++,OC类似,具有以下注释方式
//注释一行
/*
...
*/注释一段
另外,
swfit支持注释嵌套
/*
...
/*...*/
*/
三、数据类型
整数
Int:长度和平台的原声字长相同,即32位的时候,int就和Int32相同,64位机子的时候,就和Int64相同
UInt 和Int类似,只不过无符号//不推荐使用,最好统一使用int,方便类型转换
另外还有
Int8,Int16,Int32,Int64等类型,只不过长度不同
Int.max 返回Int的最大值
Int.min 返回Int的最小值
二进制数:0b
八进制数:0o
十六进制:0x
exp表示10^exp
例如
1. let binaryInteger = 0b1111
2. let octalInteger = 0o21
3. let hexadecmalInteger = 0x21
4. let expFloat = 1.25e-2// 1.15* 10^-2 = 0.0125
浮点数
Double:64位//精度很大的浮点数
Float:32位 //一般精度的浮点数
在swift中,
整数和浮点数的转换必须显式指定
1. let four = 4
2. let varDouble = 0.1111
3. let tempDouble = Double(four) + varDouble//则,tempDouble为Double类型
布尔值
两个布尔值:true false 分别表示真假
元组(tuples)
1. 多个值表示的一个序列,熟悉Python的同学对这个应该不陌生
2. let tupleExample = ("Hwc","程序员")
3. let (name,jop) = tupleExample
4. println("The jop of \(name) is \(jop)")
5. 可以获得一部分元素,忽略的部分用下划线表示
6. let (name,_) = tupleExample
7. 也可以使用下标访问
8. let name = tupleExample.0
9. let jop = tupleExample.1
10. 元组对于一个函数有多个返回值来说非常有用
可选类型
1. let var1 = "12"
2. let intVar1 = var1.toInt()
这里的intVar1就是一个可选类型Int?,问号表示要么intVar存在,他就是一个Int类型,要么intVar1不包含值
用if 可以判断这变量or常量是否含有值,如果含有可以用感叹号!来获取这个值,就是告诉编译器器,我知道这个值存在,你直接把他转换成Int类型,不要是Int?类型
1. if intVar1!= nil{
2. let result = intVar1!
3. }
对一个变量赋值nil,则表示它没有值
nil不能用于非可选类型的变量和常量
例如
1. var temp:Int?
2. temp = nil//right
3. var temp:Int
4. temp = nil //Wrong
可选绑定
使用可选绑定来判断类型是否包含值,如果包含就把这个值赋给临时常量或变量
常用在if或者while的判断里
例如
如果可以转换为整数,则if条件满足,否则不满足
let intVar = var1.toInt()
if let tempVar = intVar{//Do something else }
隐式解析可选类型
1. var temp1:Int? = 10
1. var intAlwaysExist:Int! = temp1
2. println(intAlwaysExist)//Do not need to use intAlwaysExist! ro check if intAlwaysExist != nil
隐式解析可选类型相对于可选类型的优点是不需要每次都判断可选类型是否存在,然后用解析符号!来取值。
对于一个可以确定以后一直存在的一个值,用隐式解析可选类型是十分有效的。
三、typealias
相当于typedef,类型别名
使用方法:typealias dataType = Int
let data1:dataType = 5//声明一个Int类型的data