Давайте рассмотрим этот код:
type TypeA =
{
A : int
}
type TypeB =
{
B : float
}
module Test =
let mutable c : TypeA = { A = 0 }
module Test2 =
let mutable c : TypeB = { B = 0 }
выдает ошибку:
typecheck error This expression was expected to have type
'float'
but here has type
'int'
Что я не понимаю, так это то, почему существует конфликт между двумя переменными ' c '.
Они имеют разные области действия:
type TypeA =
{
A : int
}
module Test =
let mutable c : TypeA = { A = 0 }
module Test2 =
let mutable c : TypeA = { A = 0 }
с
Test.c <- { A = 1 }
Test2.c <- { A = 2 }
Test.c, Test2.c
дает
{FSI_0009 + TypeA: A: 1} {FSI_0009 + TypeA: A: 2}
Может кто-нибудь объяснить, почему существует эта ошибка?