元组
var tuple1 = (1, 2, 3)
- 可以通过索引获取元素
var fir = tuple1.0 // fir = 1
- 可以对元素命名
var tuple1 = (first:1, second:2, third:3)
- 元素个数不可以更改
- 元祖的类型由它的元素类型决定
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("我只会执行一次,下次用就不会出现")
return "hello"
}()
func priInfo() {
print(testname)
}
}
let l1 = testLazy()//print我只会执行一次,下次用就不会出现
l1.priInfo()//print hello
//lazy1.在第一次使用的时候才会执行
//2.只会执行一次
泛型函数/模板函数,泛型类
- 泛型函数
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
- 修饰方法,表示不能在子类中覆盖重写
网友评论