io sono un po 'chagrinned che alcune delle funzioni built-in Clojure avere quello che mi sembra essere un comportamento incoerente.Clojure:/modo pulito Idiomatic per evitare NPE in un modo simile a Monade
che sto cercando di fare questo:
(let [kwns (namespace (keyword v))]
...)
in un contesto in cui v potrebbe essere nil
. La funzione keyword
funziona come mi aspetto (rendimenti nil
), ma spazio dei nomi getta una NPE.
Avevo l'impressione che le monadi non fossero usate spesso in Clojure poiché la punzonatura nilotica sembra essere la forma idiomatica (come this article continua a lungo).
mi aspettavo kwns uscire nullo, non genera un NPE. Quando questa incoerenza solleva la sua brutta testa, qual è il modo consigliato di mantenere il codice pulito .... infarcendo nil
controlli nel mio codice è non la risposta che sto volendo, naturalmente.
Perfetto ... Sapevo che doveva esserci qualcosa! –