Swift 中的泛型

2021-08-08 11:38:08 字數 1666 閱讀 9281

定義乙個交換兩個值得泛型函式

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...