在使用Measurement时,我无法返回Double,即使它应该返回Double

  • 本文关键字:返回 Double Measurement swift swiftui
  • 更新时间 :
  • 英文 :


试图使用Swift的Measurements创建一个函数,该函数返回Double。我显然是头脑发热,不明白为什么,尽管我的函数正在调用以返回一个double,但它给了我以下错误:Cannot convert return expression of type 'Measurement<UnitLength>' to return type 'Double'

func convertImperialHeightToCM() -> Double {
// User input of Feet, forcing unwrap will likely fuck this up...
let convertFeetToCm = Measurement(value: userData!.userHeightFeet, unit: UnitLength.feet)
let feetToCentimeters = convertFeetToCm.converted(to: UnitLength.centimeters)
// User input of Inches, forcing upwrap will likely fuck this up...
let convertInchesToCm = Measurement(value: userData!.userHeightInches, unit: UnitLength.inches)
let inchesToCentimeters = convertInchesToCm.converted(to: UnitLength.centimeters)
// Compute this shit and whip the numbers into one... 
let addUpCentimeters = feetToCentimeters + inchesToCentimeters

return addUpCentimeters
}

然后,我稍后也会在其他函数中调用这个函数(可能会生成一个嵌套函数,但将它们分解以帮助进行测试,另外,我是一个noob

问题是addUpCenmeters是一个测量单位,而不是双精度。因此,您有两个选项,要么返回该单位,要么调用addUpCentimeers.value来获得实际的双倍值。

您可以使用.value英尺到厘米英寸到厘米从测量获得双倍值。

func convertImperialHeightToCM() -> Double {
// User input of Feet, forcing unwrap will likely fuck this up...
let convertFeetToCm = Measurement(value: userData!.userHeightFeet, unit: UnitLength.feet)
let feetToCentimeters = convertFeetToCm.converted(to: UnitLength.centimeters).value
// User input of Inches, forcing upwrap will likely fuck this up...
let convertInchesToCm = Measurement(value: userData!.userHeightInches, unit: UnitLength.inches)
let inchesToCentimeters = convertInchesToCm.converted(to: UnitLength.centimeters).value
// Compute this shit and whip the numbers into one... 
let addUpCentimeters = feetToCentimeters + inchesToCentimeters

return addUpCentimeters
}

最新更新