私はclojure.specのガイド(http://clojure.org/guides/spec)に従っています。シーケンス仕様のためにalt
とor
の違いを私は混乱しています。clojure.spec:シーケンス仕様のための `alt`と` vs `または`
私にとって、次の2つの例は同じように機能します。では、2つの違いは何ですか?
; Use `alt`
(s/def ::config (s/* (s/cat :prop string?
:val (s/alt :s string? :b boolean?))))
(s/explain ::config ["-server" "foo" "-verbose" true "-user" 13])
; Use `or`
(s/def ::config (s/* (s/cat :prop string?
:val (s/or :s string? :b boolean?))))
(s/explain ::config ["-server" "foo" "-verbose" true "-user" 13])
一つのことしようとする: 'スペック/それをexercise'するためにそれを渡し、その後、' or'を使用してスペックを書きますあなたのために10の例を生成/検証します。 'alt'に切り替えて同じことをします。私はスペックをデバッグするために 'spec/exercise'を常に使用しています。バグのある仕様から生成された出力に検証する必要があると考えるのは素晴らしいです。 –