Como faço para armazenar métodos Java em uma lista em Clojure
-
06-07-2019 - |
Pergunta
Eu quero manter uma lista de funções normalização para um texto. Como faço para armazenar .toLowercase? Eu estava pensando em algo como isto:
(def normalizing-functions (list remove-punctuations .toLowerCase))
Solução
Parece que o seu fazer uma lista de funções para aplicar a algo em uma base regular. o método java não é bem uma função clojure, nesse sentido, embora a sua realmente fácil de envolvê-lo apenas como você faria se você estava indo para alimentá-lo para a função de mapa.
#(. tolowercase %)
Outras dicas
Ao invés de mantê-los em uma lista que você vai ter que desempacotar alguma forma depois, só ele pode ser mais fácil de .toLowerCase
envoltório em uma função clojure (edit: usando a minha ou a sintaxe de Arthur) e compô-lo com as funções que você' planejamento re ao uso para normalizar seus dados usando comp
:
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))
A macro memfn
vai fazer isso de uma forma mais legível.
(def f (memfn toLowerCase))
(f "Hello")
voltaria "Olá". (doc memfn)
tem os detalhes.