如何在 Swift 3 中使用带有浮点值的 sin(_ : ) [重复]

2024-03-10

 import Foundation
 public func sine <T: FloatingPoint   > (_ x: T  ) -> T{
    return sin(x)
 }
 // Error: Cannot invoke 'sin' with an argument list of type '(T)'

有没有解决的办法? 非常感谢。


您还可以创建一个接受 FloatingPoint 类型的 sin 方法,如下所示:

import UIKit

func sin<T: FloatingPoint>(_ x: T) -> T {
    switch x {
    case let x as Double:
        return sin(x) as? T ?? 0
    case let x as CGFloat:
        return sin(x) as? T ?? 0
    case let x as Float:
        return sin(x) as? T ?? 0
    default:
        return 0 as T
    }
}

另一种选择是向 FloatingPoint 类型添加方法或计算属性扩展,如下所示:

extension FloatingPoint {
    var sin: Self {
        switch self {
        case let x as Double:
            return UIKit.sin(x) as? Self ?? 0
        case let x as CGFloat:
            return UIKit.sin(x) as? Self ?? 0
        case let x as Float:
            return UIKit.sin(x) as? Self ?? 0
        default:
            return 0 as Self
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Swift 3 中使用带有浮点值的 sin(_ : ) [重复] 的相关文章

随机推荐