2016-02-01 27 views
1

说我有它定义两个函数,Function1Function2和我使用对象表达式来实现它的接口ICache,但我也希望添加一个辅助函数:F#添加非接口功能到对象表达式

let WebCache = 
    { new ICache with 
     member __.HelperFunction = //this doesn't work! 
     member __.Function1 = foo 
     member __.Function2 = bar 
    } 

F#似乎不允许你添加任何不属于界面的方法。有没有解决方法?如果我想这样做,我是不是应该首先使用对象表达式?

回答

3

您可以定义辅助函数作为一个普通的(本地)函数的对象表达之外:

let WebCache = 
    let helper n = 
     printfn "Helping %" n 
    { new ICache with 
     member __.Function1 = helper 1 
     member __.Function2 = helper 2 } 
+0

啊哈,就这么简单!谢谢。 – jackmott