我试图弄清楚如何为通用类(在Swift中)实现类型约束,它将通用类型限制为仅数字类型。例如Double,Int等,但不是字符串。谢谢你的帮助。
您可以使用尖括号为通用类(对函数使用相同的语法)指定类型约束(使用类和协议):
class Foo<T: Equatable, U: Comparable> { }
要在单个类型上指定多个需求,请使用where子句:
where
class Foo<T: UIViewController where T: UITableViewDataSource, T: UITextFieldDelegate> { }
但是,您似乎无法在泛型参数子句中指定可选要求,因此一种可行的解决方案是创建一个协议,使所有数字类型都通过扩展来实现,然后将类限制为该要求:
protocol Numeric { } extension Float: Numeric {} extension Double: Numeric {} extension Int: Numeric {} class NumberCruncher<C1: Numeric> { func echo(num: C1)-> C1 { return num } } NumberCruncher<Int>().echo(42) NumberCruncher<Float>().echo(3.14)