Mar*_*son 9 .net f# visibility module
任何想法为什么以下不编译?
在最后一行,它告诉我Module1没有定义.如果我从Module1中删除"内部"它工作正常.
我有两个代码文件,Module1.fs在项目中的Module2.fs之上.
Module1.fs
module internal Module1
let sample =
5 + 4
Run Code Online (Sandbox Code Playgroud)
Module2.fs
module Module2
let sample2 =
3 + Module1.sample
Run Code Online (Sandbox Code Playgroud)
您需要为模块提供命名空间,以便internal模块对以后的模块可见.
let module internal MyNamespace.Module1
let module MyNamespace.Module2
Run Code Online (Sandbox Code Playgroud)
编译器错误
尽管这里的答案是解决方法,但此行为仍然是编译器错误。阅读文档和Don Syme的Expert F#,没有一点说只有在还使用命名空间的情况下,内部模块中的类型才可以访问。
考虑到编译器发出的代码,我不会很难使内部模块中的类型在程序集中可见。
编辑: 将此行为提交给@fsbugs之后,主人本·唐·赛姆很快就确认这是一个错误。我为这种情况添加了一个工作项:
https://visualfsharp.codeplex.com/workitem/29