let eval a b =
let r = a + b
printf "calculate.."
r
type Foo() =
member this.Eval = eval 5 10
[<EntryPoint>]
let main argv =
let f = Foo()
let a = f.Eval
let b = f.Eval
0
這將調用eval 2次而不是一次。看起來this.Eval是一個函數指針,每次調用.Eval時調用eval。F#中的成員變量
我真正想要的是一個變量。
我做這個解決它......
let eval a b =
let r = a + b
printf "calculate.."
r
type Foo() =
let e = eval 5 10
member this.Eval = e
[<EntryPoint>]
let main argv =
let f = Foo()
let a = f.Eval
let b = f.Eval
0
這是這樣做的,如果我只是想有一個成員變量,而不是方法的正確方法是什麼?
你第一個方法解決了第二個問題?你想要完成什麼?不同的是,第一種方法是運行時評估,而第二種方法是編譯時,因爲'e'是在編譯時評估的。 – MadeOfAir
我只想將this.Eval作爲一個變量,我可以在對象構造中分配一個值。 正如你所說,第一種方法是運行時評估,但我只想一次評估結果(eval 5 10)。 –
我認爲第二種解決方案是好的,但我會把這個放在課堂上 –