为什么不能在 > 运算符中推断出 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)