2
为什么看起来F#参数的顺序很重要?它对于C#来说并不重要(它使用相同的编译模型)。当我试试这个:F#命令行文件顺序?
# main.fs
module Main
let main = Printer.print_repeatedly 5 "hello, world"
# printer.fs
module Printer
let print_repeatedly n str = for x in 1..n do printfn "%s" str
我执行编译器(包括微软和Mono的)与main.fs前printer.fs,我得到一个错误:
main.fs(4,12): error FS0039: The namespace or module 'Printer' is not defined
如果我做printer.fs在命令行的main.fs之前,没关系。编译器是否需要这个用于F#的原因?
更不用说它大大简化了依赖管理,这是大型项目的氪石。 – Daniel
我已经使用C++了很多。我只是觉得奇怪,考虑到F#似乎大多遵循C#类型风格的编译模型,除了这个小小的警告。 –
@Jonathan - 我认为F#和C#共享一个通用编译模型的程度,它们都被CLI绑定。我可以想到两者之间的一些重大差异,除此之外,C#支持隐式接口实现,并且它是推荐的“默认”,F#仅支持显式接口实现。 F#在C#中不支持公共静态只读字段。 F#不支持在C#中密封重写的成员。等等。 –