如何从类成员函数内部访问静态函数?
问题描述:
我有一个单元测试类:如何从类成员函数内部访问静态函数?
type [<TestFixture>] BetTests()=
[<Test>]
member x.HasGoodOddsTest() =
let ret = HasGoodOdds 10.0
Assert.IsFalse(ret, "Expected false");
和类之外定义的静态方法:
let HasGoodOdds odds = odds >= 20.0
但我发现了一个编译器错误:“值或构造‘HasGoodOdds’没有定义。”
超出班级范围的语法是什么?谢谢!
答
该方法应在模块中定义。使用Namespace.ModuleName.Method
约定
答
HasGoodOdds是否定义在BetTests类之上?它是否在同一个文件中定义?
它需要在它上面定义(在先前的文件中,或者在此文件的上面 - 通常不能在F#中引用实体直到它们被定义之后),并且如果BetTests类没有在相同的模块,您需要使用合格的名称(如@Vitaliy所述)或使用“打开”声明将命名空间/模块纳入范围。