iOS 可选型与泛型
2019-05-07 本文已影响2人
A_rcher34
可选型
-
在swift中,可选型是为了表达当一个变量值为空的情况。当一个变量值为空时,它就是nil。在swift中,无论变量是引用类型还是值类型,都可以是可选型变量。
-
在Objective-C中,没有明确提出可选型的概念。然而其引用类型却可以为nil,以此来标志其变量值为空的情况。而swift将这一理念扩大到值类型,并且明确提出了可选型的概念。
泛型
在swift中,泛型主要是为了增加代码的灵活性而生的:它可以使对应的代码满足任意类型的变量或方法。
举例:一种方法可以交换两个Int值
func swap(_ a: inout Int, _ b: inout Int) {
(a, b) = (b, a);
}
这种方法虽然正确但并不高效。如果交换的类型改为float,则有需要重写一遍方法。泛型就是为了解决这类问题而来的:希望有一个一般性的方法,可以交换任意类型的变量。
func swap<T>(_ a: inout T, _ b: inout T) {
(a, b) = (b, a);
}
因为swift是类型安全的语言,所以这里交换的两个变量的类型必须一致。