定義乙個交換兩個值得泛型函式
func swaptwovalues(_ a : inout t, _ b : inout t)
var num1 = 11
var num2 = 22
swaptwovalues(&num1, &num2)
print("num1: \(num1) -- num2: \(num2)")
var str1 = "11"
var str2 = "22"
swaptwovalues(&str1, &str2)
print("str1: \(str1) -- str2: \(str2)")
//定義乙個泛型的棧
struct stack
mutating func pop() -> element
}
extension stack
}var s = stack()
s.push("1");
print(s.topitem!)
示例
func 函式名:類名,u
:協議名》(引數名稱:t,引數名稱2
:u)
上述函式定義了有兩個型別引數,第乙個型別引數 t ,有乙個t必須是某個型別的型別約束,第二個型別引數u,有乙個u 必須符合某個協議的型別約束
protocol container
// 通過索引值型別為 int 的下標檢索到容器中的每乙個元素
subscript(i: int) -> itemtype
}
struct stack2: container
mutating func pop() -> element
self.push(item)
}var count: int
subscript(i: int) -> element
}
func allitemsmatch< c1: container, c2: container>
(_ somecontainer: c1,_ anothercontainer: c2) -> bool where c1.itemtype == c2.itemtype, c1.itemtype: equatable
for i in
0..if somecontainer[i] != anothercontainer[i]
}return
true
}var stackofstrings = stack2()
stackofstrings.push("uno")
stackofstrings.push("dos")
stackofstrings.push("tres")
var arrayofstrings = stack2()
arrayofstrings.push("uno")
arrayofstrings.push("dos")
arrayofstrings.push("tres")
if allitemsmatch(stackofstrings, arrayofstrings) else
Swift中協議與泛型的應用
1.方法的泛型 泛型約束 冒號後邊跟class或者協議,傳入的引數somet和someu必須是遵循該協議或類 naarray類,comparable協議 func somefunction somet t,someu u func compartwo a t,b t bool與oc中的id有點類似,...
Swift之泛型型別與泛型引數
import foundation func swaptwoints inout a int,inout b int func swaptwostrings inout a string,inout b string func swaptwodoubles inout a double,inout ...
swift 筆記 二十 泛型
泛型 泛型是為了解決在針對不同資料型別,而做了同一種功能的操作導致的每個型別我們都要寫乙份 的問題。有了泛型,我們可以只寫乙份邏輯 而適應於不同的資料型別。func swapint inout num1 int,inout num2 int func swapdouble inout num1 do...