Ошибка компиляции, когда регистр объединения имеет то же имя, что и тип - PullRequest
1 голос
/ 26 июня 2019

В этом примере в последней строке я хочу создать экземпляр типа A, но получаю ошибку компиляции.При наведении курсора на A("A1") я вижу, что A используется для ссылки на случай объединения TM.A, а не на тип A.Может кто-нибудь объяснить, что здесь делает компилятор и как избежать этой ошибки, не меняя имя объединенного регистра (я бы хотел, чтобы оно совпадало с именем типа)

type A(name:string)
    = member this.Name = name

type T(name:string)
    = member this.Name = name

type TK(t:T, a:List<A>) =
    member this.T = t
    member this.A = a

type TM =
    | T of T 
    | A of A 
    | G of List<T>

let a = A("A1")

1 Ответ

3 голосов
/ 26 июня 2019

Я думаю, что самым простым способом было бы просто назвать его новым, как new A("A1").

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...