Sto seguendo la guida clojure.spec (http://clojure.org/guides/spec). Sono confuso dalla differenza tra alt
e or
per le specifiche di sequenza.clojure.spec: `alt` vs` or` per spec. Sequenza
Per me i due esempi seguenti funzionano altrettanto bene. Quindi qual è la differenza tra i due?
; 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])
Una cosa da provare: scrivere uno spec usando 'o', poi mano a' spec/exercise' lo farà generare/convalidare 10 esempi per te. quindi passare a 'alt' e fare lo stesso. Io uso 'spec/exercise' tutto il tempo per il debug delle specifiche è fantastico confrontare quello che penso dovrebbe convalidare con l'output generato da una specifica buggy. –