【发布时间】:2018-07-19 17:53:33
【问题描述】:
protocol PriceCalculatable {}
extension Int : PriceCalculatable {}
extension Double : PriceCalculatable {}
class PriceCalculator {
static func culculateFinalPrice<T: PriceCalculatable>(for products: [Product],
applying coupon: Coupon?) -> T {
let x = products.reduce(0) { price, product in
return price + product.price
}
var finalPrice = Double(x)
if let coupon = coupon {
let multiplier = coupon.discountPercentage / 100
let discount = Double(finalPrice) * Double(multiplier)
finalPrice -= Double(discount)
}
return finalPrice
}
}
我收到一条错误消息:
无法将“Double”类型的返回表达式转换为“T”类型
虽然Error有道理,但是我不明白为什么Double和Int符合这个类型却不能返回
【问题讨论】:
-
缺少
Product和Coupon的定义 -
我认为这与我正在寻求的解决方案无关,除非你能说服我否则
标签: swift generics swift-protocols