我在clojure中有一个java类,它来自一个返回类的方法.我想要打开这些,如下:
(case type
java.lang.String (println "Found String" name)
java.lang.Long (println "Found Long" name)
java.nio.ByteBuffer (println "Found ByteBuffer" name)
java.lang.Boolean (println "Found Boolean" name)
java.math.BigDecimal (println "Found BigDecimal" name)
java.lang.Double (println "Found Double" name)
java.lang.Float (println "Found Float" name)
java.net.InetAddress (println "Found InetAddress" name)
java.lang.Integer (println "Found Integer" name)
java.util.Date (println "Found Date" name)
java.util.UUID (println "Found UUID" name)
java.math.BigInteger (println "Found BigInteger" name)
java.util.List (println "Found List" name)
java.util.Set (println "Found Set" name)
java.util.Map (println "Found Map" name))
Run Code Online (Sandbox Code Playgroud)
但是,当我运行这个时,我得到了
java.lang.IllegalArgumentException: No matching clause: class java.util.UUID
Run Code Online (Sandbox Code Playgroud)
当没有找到匹配的案例时,抛出的是什么.我如何匹配case子句中的类?
你不能真正做到比柴郡做的更好,这基本上是重复调用instance?,像这样:
(condp instance? x
String :string
Integer :int
:unknown)
Run Code Online (Sandbox Code Playgroud)
如果您不想关注子类型,并且只使用x类型的完全匹配,则可以(condp = (class x) ...)改为使用.
| 归档时间: |
|
| 查看次数: |
858 次 |
| 最近记录: |