swift学习记录(泛型)

泛型代码可以让我们写出根据自我需求定义、适用于任何类型的,灵活且课重用的函数和类型。可以让我们避免重复的代码,用一种清晰和抽象的方式来表达代码的意图。
代码示例:
非泛型函数,交换两个Int 值:

var a = 30
var b = 50
func swapTwoInts(inout a: Int, inout _ b: Int) {
    let temporaryA = a
    a = b
    b = temporaryA
}
swapTwoInts(&a , &b)
print(a) //输出 50

如果我们需要交换两个String值,还得写一个函数:

var a = "hello"
var b = "word"
func swapTwoString(inout a: String, inout _ b: String) {
    let temporaryA = a
    a = b
    b = temporaryA
}
swapTwoString(&a , &b)
print(a) //输出 word

像这样,交换一种类型的值,就得写一个函数,而且 这些代码都是重复的。所以这时就可以使用泛型来解决代码重复的问题。
泛型函数
泛型函数 可以作用于任何类型。
使用泛型函数来实现值交换

func swapTwoValue<T>(inout a: T, inout _ b: T) {
    let temporaryA = a
    a = b
    b = temporaryA
}

泛型函数使用占位符(通常使用 字母 T )来代替实际类型名(如Int,String,Double等)。占位符 没有明确的指示是什么类型,但是它提示a 和b 必须是同一类型,T的类型取决于传入参数的类型。
swift 标准库提供了值交换的函数swap(::),是一个泛型函数。
类型参数
如上面的泛型函数 占位符 就是一个类型参数,紧随函数名,并用尖括号括起来。类型参数,可用作函数参数的类型或者函数的返回值类型。
函数中用多个类型参数时,用逗号隔开

var a = 123
var b = "word"

func add<T,U>(a :T,b:U)->String{
    return "\(a)"+"\(b)"
}

add(a, b: b)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值