2013-03-17 67 views
5

我很困惑... this static value等於5混亂的情況下,行爲

user> java.awt.image.BufferedImage/TYPE_3BYTE_BGR 
5 

和case語句應該像這樣工作

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?" 

回答

6

test-constant S IN一個case表達不被評估。因此,您的聲明是測試號碼5是否與符號java.awt.image.BufferedImage/TYPE_3BYTE_BGR相同。由於它們不是,所以它通過默認條款。

+0

謝謝。這似乎解釋了一些事情。我想我需要使用cond。除非你碰巧知道一種方法來避免多餘的語法...... – 2013-03-17 00:18:34

+0

不,'cond'是要走的路。 – Barmar 2013-03-17 00:19:01

+0

如果您真的想要,可以使用宏擴展在編譯時將符號評估爲常量....可能不值得,但如果這是一種您將要使用的語法,可能會有用。 – mikera 2013-03-20 05:18:41