关于Clojure中比较器操作的语句简写评估,发表了这篇文章。
Does number fall in interval in Clojure?
所以,这对我来说很有意义:
(<= 4 7 7)
=>true
这是有道理的:
(< 4 7 7)
=>false
但是,如果中间数字大于或等于为4,小于 7,我是否需要将该语句评估为true?有没有一种简便的方法来做到这一点,并避免做类似的事情:
(and (< 7 7) (>= 7 4))
答案 0 :(得分:2)
此处没有内置速记,但是......
大于或等于4,小于7
也可以写为(<= 4 x 6)
或(< 3 x 7)
。
答案 1 :(得分:1)
半开间隔是很常见的。如果您需要经常使用它们,您可能需要编写一个函数:
(defn <=< [a b c]
(and (<= a b) (< b c)))
或者也许是一个宏:
(defmacro <=< [a b c]
`(let [b# ~b] (and (<= ~a b#) (< b# ~c))))