clojure.spec
Clojureに型っぽいのを書くライブラリ
型というかvalidatorを作るライブラリかmrsekut.icon
GPT-4.icon
基本的な使い方
スペックの定義
例えば、特定のキーワードが整数であることを定義します。
データの検証
データの生成
s/genを使ってスペックに従ったデータを生成します。 サンプルコード
以下は、ユーザー情報をスペックとして定義し、それを検証するサンプルコードです。
code:clojure
(ns user
;; 1. スペックの定義
(s/def ::name string?)
(s/def ::age (s/and int? #(<= 0 % 120))) ;; 2. データの検証
(def sample-user {:name "John Doe" :age 30 :email "john.doe@example.com"})
(println (s/valid? ::user sample-user)) ;; true
(def invalid-user {:name "John Doe" :age 150 :email "john.doe@example.com"})
(println (s/valid? ::user invalid-user)) ;; false
;; 3. データの生成
(def user-gen (s/gen ::user))
(println (gen/sample user-gen 3))
解説
1. **スペックの定義**
code:clojure
(s/def ::name string?)
(s/def ::age (s/and int? #(<= 0 % 120))) `
- ::nameは文字列であることを定義しています。
- ::ageは整数であり、0以上120以下であることを定義しています。
- ::emailは特定の正規表現にマッチする文字列であることを定義しています。
2. **データの検証**
code:clojure
(s/valid? ::user sample-user)
- s/valid?はデータがスペックに従っているかを検証します。sample-userは正しいデータなのでtrueを返します。
- invalid-userは年齢が範囲外なのでfalseを返します。
3. **データの生成**
code:clojure
(s/gen ::user)
- s/genはスペックに従ったデータを生成します。gen/sampleを使って3つのユーザーデータを生成しています。
これで、Clojureのclojure.specを使った基本的なデータの定義、検証、生成の方法がわかりました。clojure.specは強力なツールなので、さらに詳細な機能やカスタマイズについても学ぶと良いでしょう。