ドクターcase
曰く
cond や condp とは異なり、case は一定時間のディスパッチを行います... case ではあらゆる種類の定数式が受け入れられます。
case
の定数時間ディスパッチを利用して、Java 列挙型に一致させたいと考えています。Java のswitch
ステートメントは列挙型でうまく機能しますが、Clojure では次のようにします。
(defn foo [x]
(case x
java.util.concurrent.TimeUnit/MILLISECONDS "yes!"))
(foo java.util.concurrent.TimeUnit/MILLISECONDS)
結果:IllegalArgumentException No matching clause: MILLISECONDS
では列挙型はサポートされていませんcase
か? 私は何か間違ったことをしていますか?頼る必要cond
がありますか、それともより良い解決策がありますか?