我有两个类定义如下:
type foo () =
let getBar() =
new bar()
type bar () =
let getFoo() =
new foo()
编译器说
The type 'bar' is not defined
有办法做到这一点吗?
答案 0 :(得分:3)
这是and
关键字的使用位置(必须明显在同一个文件中):
type Foo () =
let getBar () =
Bar ()
and Bar () =
let getFoo () =
Foo ()
如果你有相互递归函数(甚至是值),也可以使用它 - 但是你必须在第一个绑定中添加rec
关键字:
let rec f x = if x > 0 then g x else 0
and g x = f (x-1)