为什么不能在 > 运算符中推断出 UnitType?
Why can’t UnitType be inferred in > operator?
为什么不能在 > 运算符中推断出 UnitType
?
import Foundation
let mass = Measurement(value: 50, unit: UnitMass.kilograms)
mass > Measurement(value: 100, unit: .kilograms)
Type 'Unit' has no member 'kilograms'
运算符的定义意味着它应该:
static func > (Measurement<UnitType>, Measurement<UnitType>) -> Bool
这里的问题是 Measurement
是泛型类型,因此您需要在初始化新对象时指定 Unit 类型。如果您希望推断类型,则需要使用 .init
初始化程序,它会推断 UnitMass 类型 init(value: Double, unit: UnitMass)
:
mass > .init(value: 100, unit: .kilograms)
为什么不能在 > 运算符中推断出 UnitType
?
import Foundation
let mass = Measurement(value: 50, unit: UnitMass.kilograms)
mass > Measurement(value: 100, unit: .kilograms)
Type 'Unit' has no member 'kilograms'
运算符的定义意味着它应该:
static func > (Measurement<UnitType>, Measurement<UnitType>) -> Bool
这里的问题是 Measurement
是泛型类型,因此您需要在初始化新对象时指定 Unit 类型。如果您希望推断类型,则需要使用 .init
初始化程序,它会推断 UnitMass 类型 init(value: Double, unit: UnitMass)
:
mass > .init(value: 100, unit: .kilograms)