小编Pab*_*rro的帖子

Swift:将一个通用的FloatingPoint值转换为Int

请考虑以下内容(从实际代码中简化):

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++模板相比)排除这种情况?

generics templates swift

6
推荐指数
1
解决办法
577
查看次数

标签 统计

generics ×1

swift ×1

templates ×1