let mean (x : float list) : float =
(List.sum x) / (float (List.length x))
let variance (x : float list) : float =
x
|> List.map (fun a -> pown (a - (mean x)) 2)
|> mean
let stdDev =
variance >> Math.Sqrt
答案 0 :(得分:2)
不可能有一个指向非静态成员函数的(非成员)函数指针。也不可能将函数指针指向绑定的函数。
请注意,自由函数类型如何具有参数void *cbdata
。您尚未显示所用API的文档,但我想打赌该API遵循一个通用的习惯用法,mg_set_request_handler
的第三个参数也是void *cbdata
。如果我的假设是正确的,则传递给注册的指针将在稍后传递给处理程序。目的是将数据(例如您的HttpServer
实例)传递到回调中。
例如:
mg_set_request_handler(ctx_, "/get", [](mg_connection *conn, void *cbdata) {
assert(cbdata);
HttpServer& server = *static_cast<HttpServer*>(cbdata);
server.get_handler_member(conn, cbdata);
}, this);
如果get_handler_member
具有非公共访问权限,那么您将需要使用静态成员函数,而不是我在示例中使用的lambda。另外,cbdata
的{{1}}自变量现在可能已无用,可以删除。
请记住,只要注册了处理程序,get_handler_member
实例就会保持活动状态。
还要重申一下:这取决于我对您显示的API的假设。请仔细查阅文档。