我正在尝试扩展Array
类型,但如果类型为Int
或Float
,我只想要可用的函数。
我知道我可以为一种类型做到这一点:
extension Sequence where Iterator.Element == Int { }
但我能为多种类型做到吗?这就是我想要的:
extension Sequence where Iterator.Element == Int || Iterator.Element == Float { }
有可能实现这个目标吗?
答案 0 :(得分:6)
这在概念上并没有真正起作用。使用扩展中的where允许您使用Element作为您指定的类型。如果你说它可以是多个类型,你可能根本就没有where说明符。
如果您正在寻找为多种类型添加特定功能,我建议您创建一个空协议并添加对所需类型的依从性。 e.g:
protocol WorksWithExtension { }
extension Int: WorksWithExtension { }
extension Float: WorksWithExtension { }
extension Sequence where Iterator.Element: WorksWithExtension {
//Do whatever you need to do here
}