如何从类成员函数内部访问静态函数?

如何从类成员函数内部访问静态函数?

问题描述:

我有一个单元测试类:如何从类成员函数内部访问静态函数?

type [<TestFixture>] BetTests()= 
[<Test>] 
    member x.HasGoodOddsTest() = 
    let ret = HasGoodOdds 10.0 
    Assert.IsFalse(ret, "Expected false"); 

和类之外定义的静态方法:

let HasGoodOdds odds = odds &gt;= 20.0 

但我发现了一个编译器错误:“值或构造‘HasGoodOdds’没有定义。”

超出班级范围的语法是什么?谢谢!

该方法应在模块中定义。使用Namespace.ModuleName.Method约定

HasGoodOdds是否定义在BetTests类之上?它是否在同一个文件中定义?

它需要在它上面定义(在先前的文件中,或者在此文件的上面 - 通常不能在F#中引用实体直到它们被定义之后),并且如果BetTests类没有在相同的模块,您需要使用合格的名称(如@Vitaliy所述)或使用“打开”声明将命名空间/模块纳入范围。