This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-07-17
Channels
- # bangalore-clj (2)
- # beginners (51)
- # boot (20)
- # cider (14)
- # clara (1)
- # cljs-dev (14)
- # cljsrn (50)
- # clojure (140)
- # clojure-dev (5)
- # clojure-france (1)
- # clojure-gamedev (3)
- # clojure-italy (4)
- # clojure-poland (3)
- # clojure-russia (8)
- # clojure-sg (1)
- # clojure-spec (64)
- # clojure-uk (51)
- # clojurescript (54)
- # core-typed (1)
- # data-science (2)
- # datomic (61)
- # docker (1)
- # emacs (6)
- # events (1)
- # graphql (1)
- # hoplon (14)
- # leiningen (8)
- # luminus (3)
- # mount (6)
- # off-topic (18)
- # om (17)
- # parinfer (34)
- # pedestal (47)
- # play-clj (1)
- # protorepl (1)
- # re-frame (56)
- # reagent (11)
- # ring-swagger (5)
- # rum (6)
- # sql (1)
- # uncomplicate (2)
- # vim (3)
- # yada (31)
(def x [^:test [1 2]])
x
;=> [[1 2]]
(meta x)
;=> nil
(meta (first x))
;=> {:test true}
(def x ^:test [1 2])
x
;=> [1 2]
(meta x)
;=> {:test true}
спасибо!
метадата для всяких штук, типа "это пришло из базы", "а это пришло из интернета", и что бы руками не выбрасывать такие поля перед сравнением данных.
или помечать объекты тем, какие шаги обработки они прошли, опять же, не засоряя сами данные такой инфой
(let [x ^{:foo 1} {:a 1}
y ^{:bar 2} {:a 1}]
[(= x y)
x
y
(meta x)
(meta y)])
;=> [true {:a 1} {:a 1} {:foo 1} {:bar 2}]
можно тесты писать прям в метадате, как в питончике:
>(defn example-fn
{:test #(do
(assert (= (example-fn 1) 2))
(assert (= (example-fn -1) -2)))}
[i] i)
> (example-fn 1)
1
> (test #'example-fn)
AssertionError Assert failed: (= (example-fn 1) 2)
круто, спасибо!
я тут недавно узнал что deftest на самом деле как раз через мета тесты работает https://github.com/clojure/clojure/blob/2e0c0a9a89ede8221504edeb90e8c4ee6cce7e16/src/clj/clojure/test.clj#L621