Wie speichere ich Java-Methoden in einer Liste in Clojure
-
06-07-2019 - |
Frage
Ich möchte eine Liste halten von Funktionen für einen Text zu normalisieren. Wie speichere ich .tolowercase? Ich dachte an so etwas wie folgt aus:
(def normalizing-functions (list remove-punctuations .toLowerCase))
Lösung
Es sieht aus wie Ihr eine Liste von Funktionen machen, um etwas auf einer regelmäßigen Basis anzuwenden. die Java-Methode ist nicht ganz clojure Funktion in diesem Sinne auch wenn seine wirklich einfach es wie würden Sie, wenn Sie einpacken, wo geht es um die Kartenfunktion zu ernähren.
#(. tolowercase %)
Andere Tipps
Anstatt sie in einer Liste zu halten, die Sie später einen Weg auspacken müssen werden, kann es nur einfacher sein .toLowerCase
in einer clojure Funktion wrap (edit: mit meiner oder Arthurs Syntax) und komponieren sie mit den Funktionen, die Sie‘ re Planung Ihrer Daten verwenden comp
zu normalisieren mit:
user=> (defn remove-punctuation [st] ...removing puncutation mechanics...)
user=> (defn lower-case [st]
(.toLowerCase st))
user=> ((comp remove-punctuation lower-case) "HELLO THERE!")
"hello there"
user=> (defn normalize-data [data]
((comp remove-punctuation lower-case) data))
Das memfn
Makro wird dies in einer besser lesbaren Art und Weise.
(def f (memfn toLowerCase))
(f "Hello")
zurückkehren würde "Hallo". (doc memfn)
hat die Details.