У меня есть досадная ошибка.
type Animal =
abstract member Name : string
type Dog (name : string) =
interface Animal with
member this.Name : string =
name
let pluto = new Dog("Pluto")
let name = pluto.Name
Последняя строка, в частности "Имя", генерирует ошибку компилятора, указывающую, что "поле, конструктор или член" Имя "не определено".
Обходной путь, который я использовал, - написать
let name = (pluto :> Animal).Name
Однако это очень раздражает и создает много визуального шума. Есть ли что-то, что можно сделать в F #, чтобы просто разрешить Имя, не сообщая компилятору, что имя является производным членом из типа Animal?