Also arbeite ich an einer Stream-Funktion, die einige Metriken für mehrere Ereignisse zusammenfasst. Dazu verwende ich die project
Funktion und es sieht etwa so aus:Variable Argumente für Riemann-Projektfunktion
(project [(func (:service event) (nth service-list 0))
(func (:service event) (nth service-list 1))
(func (:service event) (nth service-list 2))]
(..))
service-list
ist ein Argument der umgebenden Funktion, die einen Vektor von Dienstleistungen enthält, die addiert werden müssen. func
ist eine Funktion, die zwei Argumente akzeptiert und eine true
/false
Die Verwendung des obigen Snippet funktioniert gut, aber ich möchte in der Lage sein, es zu vereinfachen, so dass ein Vektor, der größer oder kleiner als 3 Elemente ist, funktionieren würde.
Bisher habe ich dies:
(project (mapv (fn[service] (
`func (:service event) ~service)
) service-list)))
(..)
, die ich zurückkehrt einen Vektor von Funktionen denken, die nicht ausgewerteten sind. Ich ging mit diesem Ansatz, sobald ich erkannte, dass project
ein Makro ist. Keine Ahnung, ob ich das Richtige mache ...