Clojure 用java静态int混淆大小写行为

Clojure 用java静态int混淆大小写行为,clojure,Clojure,我很困惑。。。等于5 user> java.awt.image.BufferedImage/TYPE_3BYTE_BGR 5 案例陈述应该是这样的 user> (case 5 5 "yes" "huh?") "yes" 但是为什么它是这样工作的呢?为什么不匹配 user> (case java.awt.image.BufferedImage/TYPE_3BYTE_BGR java.awt.image.BufferedI

我很困惑。。。等于5

user> java.awt.image.BufferedImage/TYPE_3BYTE_BGR
5
案例陈述应该是这样的

user> (case 5
        5 "yes"
        "huh?")
"yes"
但是为什么它是这样工作的呢?为什么不匹配

user> (case java.awt.image.BufferedImage/TYPE_3BYTE_BGR
            java.awt.image.BufferedImage/TYPE_3BYTE_BGR "yes"
            "huh?")
"huh?"

不计算
情况下
表达式中的
测试常数
s。因此,您的语句正在测试数字
5
是否与符号
java.awt.image.buffereImage/TYPE\u 3BYTE\u BGR
相同。因为它们不是,所以这就取决于默认条款。

谢谢。这似乎可以解释问题。我想我需要使用cond。除非您碰巧知道一种避免额外语法位的方法…不,
cond
是一种方法。如果您确实需要,您可以在编译时使用宏扩展将符号计算为常量。。。。可能不值得这么做,但如果这是一种您将经常使用的语法,那么它可能会很有用。