关联类型
定义一个协议时,声明一个或多个关联类型作为协议定义的一部分将会非常有用。关联类型为协议中的某个类型提供了一个占位符名称,其代表的实际类型在协议被遵循时才会被指定。关联类型通过 associatedtype 关键字来指定。关联类型只能在协议中定义。
关联类型实践
在协议中使用associatedtype来定义一个关联类型,在遵守协议的类中使用typealias指定关联类型,如下图:
import UIKit
protocol HelloProtocol {
/****
定义一个关联类型
/
associatedtype value
/****
定义一个使用方法
/
mutating func logValue(v: value)
}
class HelloClass: HelloProtocol {
/
指定关联类型是哪种类型,这里指定的是Int
/
typealias value = Int
/
实现协议中的方法
/
func logValue(v: Int) {
/
这里打印的类型是Int类型2
/
print(v)
}
}
let hC = HelloClass()
hC.logValue(v: 2)
class NextClass: HelloProtocol {
/*
指定关联类型是哪种类型,这里指定的是Int
/
typealias value = String
/*
实现协议中的方法
/
func logValue(v: String) {
/*
这里打印的类型是String类型NextClass
*/
print(v)
}
}
let hN = NextClass()
hN.logValue(v: "NextClass")
网友评论