我有一个我创建的类的对象,我正在使用 %A 格式说明符打印该对象,我看到了类型名 Program+myclass 而不仅仅是 myclass ?这是为什么?
有人可能会说 Program 是命名空间,如果是这样那我为什么不能执行以下操作?
let o = Program+myclass()
这是我的完整代码
open System
type myclass() =
member val X = 3 with get,set
[<EntryPoint>]
let main argv =
let o = myclass()
o |> printfn "Here is myclass object %A"
Console.ReadKey()
0 // return an integer exit code
最佳答案
所有的类都隐式地放在一个模块中。
Program
只是当您的程序只有一个文件时隐式创建的模块的名称。
例如运行fsi中的代码会打印
Here is myclass object FSI_0003+myclass
前缀只是模块的名称。然后编译器隐藏这个实现,这样你就不能自己使用它,但如果你使用反射就可以。
关于f# - 为什么我在 printfn 尝试打印对象时看到 Program+ 前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24358845/