请考虑以下内容(从实际代码中简化):
func roundedInt<T: FloatingPoint>(_ f: T) -> Int {
return Int(f.rounded())
}
Run Code Online (Sandbox Code Playgroud)
无法编译时出现以下错误:
无法使用类型为'(T)的参数列表调用类型'Int'的初始值设定项'Int'的过载存在这些部分匹配的参数列表:(Int64),(Word),(UInt8),(Int8),(UInt16) ),(Int16),(UInt32),(Int32),(UInt64),(UInt),(Int),(Float),(Double),(Float80),(String,radix:Int),(CGFloat), (的NSNumber)
我认为这意味着FloatingPoint无法与任何Int重载匹配.
是否有一种简单的方法可以使这项工作?或者是否存在限制Swift泛型(例如,与C++模板相比)排除这种情况?