gpt4 book ai didi

swift - 如何在 Swift 中存储通用测量值?

转载 作者:行者123 更新时间:2023-11-28 13:31:58 25 4
gpt4 key购买 nike

我想要一个可以表示单个 Measurement 的变量但可能有不同的单位类型。例如,它可以存储长度或质量。看起来很简单,但我想不通。

这是我尝试过的:

struct Data {
var weight: Measurement<UnitMass>
var length: Measurement<UnitLength>
var target = "Weight"

var valueOfTarget: Measurement<Unit> {
if target == "Weight" {
return weight
} else {
return length
}
}
}

var data = Data(weight: Measurement<UnitMass>(value: 10, unit: UnitMass.kilograms),
length: Measurement<UnitLength>(value: 10, unit: UnitLength.centimeters),
target: "Weight")

print(data.valueOfTarget)

我也试过使用 <Dimension>正如另一个答案中所建议的那样,但也有类似的错误。

这会导致编译器错误:

error: cannot convert return expression of type 'Measurement<UnitMass>' to return type 'Measurement<Unit>'

我是否遗漏了一些明显的东西,或者这是不可能的?

最佳答案

您可以创建新的通用返回值。这对我来说似乎可以编译。

struct Data {
var weight: Measurement<UnitMass>
var length: Measurement<UnitLength>
var target = "Weight"

var valueOfTarget: Measurement<Unit> {
if target == "Weight" {
return Measurement<Unit>(value: weight.value, unit: weight.unit)
} else {
return Measurement<Unit>(value: length.value, unit: length.unit)
}
}
}

var data = Data(weight: Measurement<UnitMass>(value: 10, unit: UnitMass.kilograms),
length: Measurement<UnitLength>(value: 10, unit: UnitLength.centimeters),
target: "Weight")

print(data.valueOfTarget)

关于swift - 如何在 Swift 中存储通用测量值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57224701/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com