I have the struct Vector:
struct Vector{
var X : Measurement<Dimension>
var Y : Measurement<Dimension>
var Z : Measurement<Dimension>
...
And I create new object, for example:
let test = Measurement(value: 1.5, unit: UnitLength.inches) as Measurement<Dimension>
var lVector = Vector(x: Measurement(value: 10, unit: UnitLength.meters), y: test, z: Measurement(value: 10, unit: UnitLength.meters))
Everything works fine. But if try to use variable from other class, I got the error: "Cannot convert value of type 'Measurement' to type 'Measurement' in coercion"
final class SettingsManager{
...
var test = Measurement(value: 1.5, unit: UnitLength.inches)
... }
class Calculator {
...
let test = SettingsManager.shared.test as Measurement<Dimension>
var lVector = Vector(x: Measurement(value: 10, unit: UnitLength.meters), y: test, z: Measurement(value: 10, unit: UnitLength.meters))
I tried "as!" and got
Cast from 'Measurement<UnitLength>'
to unrelated type 'Measurement<Dimension>'
always fails
The same variable declared in this class works fine as I showed above. What I did wrong?
let test = Measurement(value: 1.5, unit: UnitLength.inches) as Measurement<Dimension>
works. I think I'd regard it as a bug in the language.Measurement<UnitLength>
is not aMeasurement<Dimension>
but UnitLength is certainly a Dimension. Do you see?