泛型
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
pringElemtFormArr(a: stringArr)
pringElemtFormArr(a: intArr)
pringElemtFormArr(a: doubleArr)
donoting(x: 123)
donoting(x: "123")
donoting(x: true)
}
var stringArr = ["hi","hello","bye"]
var intArr = [1,2,3]
var doubleArr = [1.1,2.2,3.3]
//普通方法
func printAreingArr(a:[String]) {
for s in a {
print(s)
}
}
func pringIntArr(a:[Int]) {
for i in a {
print(i)
}
}
//泛型的方法 T代表任意類型
func pringElemtFormArr<T>(a:[T]) {
for element in a {
print(element)
}
}
func donoting<T>(x:T) -> T {
return x
}
}
Swift中mutating關(guān)鍵字
Swift中protocol的功能比OC中強大很多,不僅能再class中實現(xiàn),同時也適用于struct、enum。
使用 mutating 關(guān)鍵字修飾方法是為了能在該方法中修改 struct 或是 enum 的變量,在設(shè)計接口的時候,也要考慮到使用者程序的擴展性。所以要多考慮使用mutating來修飾方法。
import UIKit
struct GenericArr<T> {
var items = [T]() //創(chuàng)建數(shù)組
mutating func push(item:T) {
items.append(item)
}
}
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
var myPhone = ["ipone5","iphone6","iphone7"]
var LisaArr = GenericArr(items: myPhone)
LisaArr.push(item: "iphon7 plus")
print( LisaArr.items)
}
}