bst*_*ack 6 f# functional-programming statsd
在F#中,您可以在函数签名上进行模式匹配.我想用一个函数来装饰一些函数,该函数测量函数的执行并调用statsd.我目前的功能是:
let WrapFunctionWithPrefix(metrics:Metric.Client.IRecorder, functionToWrap, prefix) =
let metricsIdentifier = (sprintf "%s.%s" prefix Environment.MachineName)
using (metrics.StartTimer(metricsIdentifier)) ( fun metrics -> functionToWrap)
Run Code Online (Sandbox Code Playgroud)
如您所见,前缀会有所不同,在我们的应用程序中,这将根据函数定义而有所不同.因此,每次我想要执行以下操作时,不必传递度量前缀:
let WrapFunction metrics afunc =
match afunc with
| :? (int -> int) -> WrapFunctionWithPrefix(metrics, afunc, "My function 1")
| :? (string -> string) -> WrapFunctionWithPrefix(metrics, afunc, "My function 2")
| _ -> failwith "Unknown function def"
Run Code Online (Sandbox Code Playgroud)
基于F#中的函数签名是否有任何模式匹配方式?
任何帮助赞赏.
比利
是否有可能将案件宣布为DU?
type MyFunctions =
| Intish of int -> int
| Stringish of string -> string
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
237 次 |
最近记录: |