2017-02-26 1 views
0

私は一連の文字列を表現したいと思います。内側のコレクションはすべて同じ長さでなければなりません。specで同じサイズのコレクションのシーケンスを定義する方法は? (それは可能ですか?)

私の最初の試みは、この

(s/def ::stuff (s/every (s/coll-of string?) :min-count 1)) 

のように見えます。しかし、私はこれを行使したとき、私は様々な長さの内側のコレクションを取得します。

長さがすべて同じであるように指定する宣言的方法はありますか?または、これは仕様のカスタムジェネレータ関数でのみ指定できますか?

答えて

1

私は

おそらく世代ますが、あなたが買ってあげる事のほとんどは空のコレクションまたは両方は自明渡す一つの要素の集合、のいずれかになります
(s/def ::stuff 
    (s/and 
    (s/every (s/coll-of string?)) 
    #(or (empty? %) 
     (apply = (map count %))))) 

のようなものとして仕様を述べるだろう長さの制約。そのためにはカスタムジェネレータが必要です。

関連する問題