给定以下代码:
let bar =
lazy(
printfn "bar"
())
let foo =
lazy(
printfn "foo"
bar)
在交互式窗口中(每次都重置),
当我打电话时,let res = foo.Force ()
我得到:
foo
val res : Lazy<unit> = Value is not created.
当我打电话时foo.Force()
,我得到:
foo
bar
val it : Lazy<unit> =
<ToString exception: Object reference not set to an instance of an object.>
{IsValueCreated = false;
Value = null;}
在这两种情况下,我都希望它只打印“foo”,但是第二种情况会打印“foo\nbar”。这里发生了什么?