1
我遇到了這個怪異的行爲:爲什麼每一個?函數在Clojure中的空向量返回true?
(every? true? [])
=> true
(every? false? [])
=> true
(every? odd? [])
=> true
而且不勝枚舉這樣...
它應該返回的假,而不是真正的我猜測。
設計這個功能的原因是什麼?
我遇到了這個怪異的行爲:爲什麼每一個?函數在Clojure中的空向量返回true?
(every? true? [])
=> true
(every? false? [])
=> true
(every? odd? [])
=> true
而且不勝枚舉這樣...
它應該返回的假,而不是真正的我猜測。
設計這個功能的原因是什麼?
大多數語言中具有類似every?
和not-any?
的函數的一般規則是,當給定空數組時,它們返回標識值。這可以確保當您將操作組合到數組的子集上時,可以獲得相同的結果。規則是
(and (every? true? array1) (every? true? array2))
應該返回同樣的事情
(every? true? (concat array1 array2))
如果every?
返回false
爲空數組,這將打破等價當兩個數組是空的。
同樣,not-any?
爲空數組返回false
確保
(not-any? true? (concat array1 array2))
相同
(or (not-any? true? array1) (not-any? true? array2))
可否請指定的數字的在'[]'不在'奇怪?',而不是'false?',而不是'true?'這是'every?'返回'false'所需要的結果嗎? – Sylwester
「非參數參數」是什麼意思?如果不改變問題的含義,這可以改爲「空」嗎? –
@ArthurUlfeldt你是對的!改變了標題。 –