1.用反斜线 \ 和 小括号 () 做字符串插值
let hand = 2;
var age = 20;
let str = "i am \(age) years old and I have \(hand) hands";
2.字符串可用 + 进行拼接
1.String类型和 Int类型的不能拼接(和Java不同).
比如: let str = "I am " + 2 +" years old"; 是错的
可以: let str = "I am " + String(2) +" years old";
3.Swift严格要求变量在使用之前必须进行初始化
4.100万 可写成: 100_0000
5.只有类型完全相同的才能够 加减乘除
1.let num1 = 3
let num2 = 0.14
let sum = num1 + num 2 错
2.let sum = 3 + 0.14 对
6.可用typealias关键字定义类型的别名 (和 typedef作用类似)
7.Bool 条件判断. 和Java完全一样true false. 不再有0代表false 非0代表true的概念
8.范围运算符
1.a...b 表示 [a,b]
2.a..<b 表示 [a,b)
3.a<..b 表示 (a,b]
用处:
for i in 0..<5{ } //循环5次 0~4
9.溢出运算符(只能用于 整型计算) 5个 & 开头:
&+ &- &* &/ &%(最后两个被废弃了)
用处:
let x = UInt8.max // x值 255
let y = x &+ 1 //y值 0 并且 y 的类型 是 UInt8
10.元组
1.var point = (x : 10 , y : 20 ,name : "zhang" )
2.可指定类型 var person : (String , Int) = (..............)
3.可将元组的值分别赋值给 多个变量!
var point = (10,20);
var (x , y) = point; //注意这里x,y是2个变量
还可以使用下划线_ 忽略某个元素的值,取出其他元素的值
var point = (10,20)
var (_, a) = point;
11.流程结构 一定要加上大括号.
比如 if (a == 10) return; 是错的.
必须 if (a == 10) {return ;} 是对的
12.for-in
1. for i in 0..<5{
//TODO
}
2.如果不需要用到i,可用下划线_代替.
for _ in 0..<5{
//TODO
}
3.i 是常量! 不能够被赋值
13.switch
1.不需要在每一个case后面增加break,执行完case对应的代码后 默认会自动退出switch语句
2.可以用来匹配字符串
3.每一个case后面必须至少有一个可以执行的语句
4.一个case后面可以填写多个匹配条件,条件之间用逗号隔开.
5.case的条件可以填写一个范围 比如 case 90...100 :
6.switch要保证处理所有可能的情况,不然编译器直接报错.所以 default: 不能少 (并且default也必须至少有一个可执行语句)
7.可以用来匹配元组
var person = (40,70)
switch person {
case (20,10):
println(person)
case (_,30):
println(person)
case (30...50,60...80):
println(person)
default:
println(person)
}
8.在case匹配的同时,可以将switch中的值绑定给一个特点的常量或者变量,以便在 case后面的语句中使用
let point = (0,10);
switch point {
case (let x,0):
println("点在x轴上,并且x值为\(x)")
case (0,let y):
println("点在y轴上,并且y值为\(y)")
case (let x,let y):
println("点在(\(x),\(y))")
}
9.switch语句可以使用 where 关键字来增加判断的条件
let point = (-10,10);
switch point {
case (let x,let y) where x == y:
println("x == y")
case (let x,let y) where x == -y:
println("x == -y")
case (let x,let y):
println("其他情况")
}
10.fallthrough
1.作用:执行完当前case后,会接着执行fallthrough后面的case或者default语句
2.位置: 以前break的位置
3.注意:fallthrough后面的case条件不能定义变量和常量
14.函数可添加外部参数名 (默认情况下,函数的第二个以后的参数默认就带有外部参数名)
一旦定义了外部参数名,在调用函数时就必须加上外部参数名
用 # 号能简化外部参数名的定义 func sum (#num1: Int,#num2: Int) -> (Int,Int) {}
15.默认参数值
1.可以在定义函数时,给形参一个默认值,调用函数时,就可以不用给这个形参传值
2.带有默认参数值的形参,默认情况下Swift会自动给它生成一个跟形参名相同的 外部参数名.
如果在 带有默认参数值的形参前面加一个 _ (注意 和形参之间是有空格的).调用函数时就不用写外部参数名了.
16.常量参数
1.默认情况下,什么都不写,函数的参数都是常量参数,不能在函数内部修改
2.有些情况下,若想参数可修改,在形参前加上 var .
17.输入输出参数
1.在C语言中,利用指针可以在函数内部修改外部变量的值
2.在Swift中,利用 输出输入参数 ,也可以完成相同的功能 只需在形参 前面加 inout(不需要再加var)
3.调用带有输入输出参数的函数时 需要使用 &a