Я не могу вернуть конкретный регистр типа другому типу, который просто хочет хранить универсальный регистр, и фактически не реализует конкретный пример.(Например, не относящиеся к типам ниже, вместо того, чтобы возвращать 0,1 с сантиметрами, я пытаюсь вернуть сантиметры).
Мой тип определяется следующим образом:
type UnitOfMeasure =
| Foo of decimal
| Bar of decimal
| Baz of decimal
У меня также есть:
type BlahComponent =
{ Name : string
Units : UnitOfMeasure }
Мне дано строковое представление типа UnitOfMeasure, и яя пытаюсь решить, какой UnitOfMeasure (Foo, Bar или Baz) у меня есть.Я использую следующую функцию:
let decideUnitOfMeasure stringRepresentationOfUnitOfMeasureType =
match stringRepresentationOfUnitOfMeasureType with
| "Foo" -> Foo
| "Bar" -> Bar
| "Baz" -> Baz
Наконец, я пытаюсь присвоить возвращаемое значение manageUnitOfMeasure для BlahComponent
let stringRepresentationOfUnitOfMeasureType = "Foo"
let bomComponent = {Name = "nameString"
Units = decideUnitOfMeasure stringRepresentationOfUnitOfMeasureType}
Попытка присвоить возвращение figureUnitOfMeasure единицам приводит кследующая ошибка: ожидалось, что выражение будет иметь тип «UnitOfMeasure», но имеет тип «(десятичное число -> UnitOfMeasure)».
По определению UnitOfMeasure возвращается фактический случай Foo, Bar илиБаз невозможен, потому что он требует приведения UnitOfMeasure к десятичному числу.Есть ли способ вернуть фактический случай без приведения к десятичному числу?