In F # können Sie eine Mustererkennung für eine Funktionssignatur durchführen. Ich möchte eine Reihe von Funktionen mit einer Funktion dekorieren, die die Ausführung der Funktion misst und nach statsd aufruft. Die aktuelle Funktion, die ich habe, ist:Mustererkennung basierend auf der Funktionssignatur
let WrapFunctionWithPrefix(metrics:Metric.Client.IRecorder, functionToWrap, prefix) =
let metricsIdentifier = (sprintf "%s.%s" prefix Environment.MachineName)
using (metrics.StartTimer(metricsIdentifier)) (fun metrics -> functionToWrap)
Wie man oben sehen kann, wird das Präfix variieren, und in unserer Anwendung dieser pro Funktionsdefinition variieren. Anstatt also in dem Maß Präfix etwas zu tun, wie die folgende jedes Mal, ich möchte passieren zu müssen:
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"
Gibt es eine Möglichkeit der Muster auf der Funktionssignatur in F # Matching basiert?
Jede Hilfe wird geschätzt.
Billy
Prost, ging diese Route und arbeitete. Etwas eleganter! – bstack