0
我執行(對於文章)兩個自定義綴運營商:最佳運營商定製與泛型類型約束的數值型
- ¿% - 計算總的百分比。
- %? - 計算表示一段總數的百分比。
調試一些錯誤和尋找信息後,我終於找到一個辦法讓我的代碼工作:
protocol NumericType {
static func *(lhs: Self, rhs: Self) -> Self
static func *(lhs: Self, rhs: Int) -> Self
static func /(lhs: Self, rhs: Self) -> Self
static func /(lhs: Self, rhs: Int) -> Self
} // NumericType
extension Double : NumericType {
internal static func *(lhs: Double, rhs: Int) -> Double {
return lhs * Double(rhs)
}
internal static func /(lhs: Double, rhs: Int) -> Double {
return lhs/Double(rhs)
}
}
extension Float : NumericType {
internal static func *(lhs: Float, rhs: Int) -> Float {
return lhs * Float(rhs)
}
internal static func /(lhs: Float, rhs: Int) -> Float {
return lhs/Float(rhs)
}
}
extension Int : NumericType { }
infix operator ¿%
func ¿% <T: NumericType>(percentage: T, ofThisTotalValue: T) -> T {
return (percentage * ofThisTotalValue)/100
} // infix operator ¿%
infix operator %?
func %? <T: NumericType>(segmentOf: T, thisTotalValue: T) -> T {
return (segmentOf * 100)/thisTotalValue
} // infix operator %?
let percentage: Double = 8
let price: Double = 45
let save = percentage ¿% price
print("\(percentage) % of \(price) $ = \(save) $")
print("\(save) $ of \(price) $ = \(save %? price) %")
...輸出:
8.0 % of 45.0 $ = 3.6 $
3.6 $ of 45.0 $ = 8.0 %
我的問題是以下:
你認爲可能有更優化和可讀的方法嗎?
是嗎?你能提出一些建議還是分享一個例子?
看來您的代碼按預期工作。如果您正在尋找可能改進的評論和建議,請在http://codereview.stackexchange.com上發佈。 –
我會這樣做,謝謝你的建議。 –