我正在尝试延长Array
类型,但我只希望类型为时可用的函数Int
or Float
.
我知道我可以针对一种类型执行此操作:
extension Sequence where Iterator.Element == Int { }
但我可以对多种类型执行此操作吗?这就是我想要的:
extension Sequence where Iterator.Element == Int || Iterator.Element == Float { }
有可能做到这一点吗?
这在概念上实际上行不通。在扩展中使用 where 允许您使用 Element 作为您指定的类型。如果您说它可以是多种类型,那么您可能根本没有 where 说明符。
如果您希望为多种类型添加特定功能,我建议您创建一个空协议并添加对所需类型的遵守。例如:
protocol WorksWithExtension { }
extension Int: WorksWithExtension { }
extension Float: WorksWithExtension { }
extension Sequence where Iterator.Element: WorksWithExtension {
//Do whatever you need to do here
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)