元組
var tuple1 = (1, 2, 3)
- 可以通過索引獲取元素
var fir = tuple1.0 // fir = 1
- 可以對元素命名
var tuple1 = (first:1, second:2, third:3)
- 元素個數(shù)不可以更改
- 元祖的類型由它的元素類型決定
var tuple2 = (1,"2",3)//(Int,String,Int)
用途
- 同時給多個變量賦值
- 同時返回多個值,返回的值也可以命名
defer
func defer1() {
defer{
print("order1")
}
defer{
print("order0")
}
print("this will print first")
}
defer1()
//輸出
//this will print first
//order0
//order1
final
修飾方法,表示父方法在子類里面不能被重寫
autoclosure
func test(@autoclosure c: () -> Bool){
if c() == false {
print("false")
}else {
print("true")
}
}
test(2>1)
func test1(@autoclosure c: () -> Int){
if c() > 0 {
print("c() > 0 ")
}else{
print("c() < 0")
}
}
test1(2-1)//
lazy
class testLazy{
var testname :String = {
print("我只會執(zhí)行一次,下次用就不會出現(xiàn)")
return "hello"
}()
func priInfo() {
print(testname)
}
}
let l1 = testLazy()//print我只會執(zhí)行一次,下次用就不會出現(xiàn)
l1.priInfo()//print hello
//lazy1.在第一次使用的時候才會執(zhí)行
//2.只會執(zhí)行一次
泛型函數(shù)/模板函數(shù),泛型類
- 泛型函數(shù)
func printOne<T> (a:T){
print(a)
}////< >里面是類型占位符,可以是任意描述
func printOne<anyWords> (a:anyWords){
print(a)
}////< >里面是類型占位符,可以是任意描述
2.泛型類
class hello <T> {
var num: T!
func priInfo(){
print(num)
}
}
Final
- 修飾方法,表示不能在子類中覆蓋重寫