2009-10-21 184 views
0

我有一個單元測試類:如何從類成員函數內部訪問靜態函數?

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’沒有定義。」

超出班級範圍的語法是什麼?謝謝!

回答

1

該方法應在模塊中定義。使用Namespace.ModuleName.Method約定

2

HasGoodOdds是否定義在BetTests類之上?它是否在同一個文件中定義?

它需要在它上面定義(在先前的文件中,或者在此文件的上面 - 通常不能在F#中引用實體直到它們被定義之後),並且如果BetTests類沒有在相同的模塊,您需要使用合格的名稱(如@Vitaliy所述)或使用「打開」聲明將命名空間/模塊納入範圍。