您可以使用泛型来编写一个通用函数,该函数接受任何通过CustomStringConvertible协议实现RawRepresentable协议的值的参数。以下是一个示例代码:
func printRawValue(_ value: T) {
print(value.rawValue)
}
// 示例使用枚举来演示
enum Direction: String, CustomStringConvertible {
case north = "North"
case south = "South"
case east = "East"
case west = "West"
var description: String {
return self.rawValue
}
}
let direction = Direction.north
printRawValue(direction) // 输出: "North"
在上面的示例中,我们定义了一个泛型函数printRawValue
,该函数接受一个泛型参数T
,该参数需要同时遵循CustomStringConvertible
和RawRepresentable
协议。在函数内部,我们可以通过value.rawValue
访问传递的值的原始值,并将其打印出来。
然后,我们使用一个枚举Direction
来演示该函数的使用。这个枚举遵循了CustomStringConvertible
协议和RawRepresentable
协议,原始值的类型是String
。我们创建了一个Direction
枚举的实例direction
,并将其传递给printRawValue
函数,该函数会打印出direction
的原始值"North"。
请注意,通过使用泛型,我们可以在函数中使用任何遵循协议的类型,而不仅限于枚举。这使得该函数可以处理更广泛的输入。