2013-07-19 25 views
2

我碰到這個代碼片段在一本書的Clojure來了。你能解釋一下contains?是如何工作的嗎?如何包含?在Clojure工作?

(contains? [1 2 3] 3) 
;= false 
(contains? [1 2 3] 2) 
;= true 
(contains? [1 2 3] 0) 
;= true 

回答

5

試想一下,在documentation

包含?

(包含?科爾鍵)

返回如果屬實關鍵是目前給定的集合中,否則 返回false。請注意,對於數字索引的集合像 載體和Java數組,這個試驗如果數字鍵是 指標範圍之內。 「包含?」運行常數或對數時間; 它不會執行線性搜索值。另見'一些'。

所以,在你的榜樣,(contains? [1 2 3] 3)回報false因爲集合[1 2 3]不索引3在包含一個項目(這意味着(get [1 2 3] 3)將返回nil)。

+1

所以這個名字是有點混亂。 Thx –

+1

@TruongHa是的,常見錯誤認爲它說如果一個集合包含一個元素。混淆每個人:-) – sloth