Avatar
extension FloatingPoint { @inlinable mutating func round_(_ rule: FloatingPointRoundingRule) { if let zelf = self as? Float { switch rule { default: self.round(rule) } } else if let zelf = self as? Double { switch rule { case .towardZero: self = trunc(zelf) as! Self case .down: self = floor(zelf) as! Self case .up: self = ceil(zelf) as! Self case .toNearestOrAwayFromZero: self = Darwin.round(zelf) as! Self default: self.round(rule) } } } こんなかんじに書いただけではまだ遅いですね。 速度が同じくらいになったのでやっぱり分岐が消えてなさそう?
12:53 AM
やっぱprotocol作るしかなさそうですね。
12:56 AM
と思ったけどextension FloatinPoint: Roundableはできないか……