2

我正在尝试匹配falsemap 键的值,这在 javascript 中有效地表示也undefinednull等等。在我看来,core.match 与该值完全匹配。有没有办法做到这一点?

另一种方法是匹配“not true”,但文档也没有给我任何提示如何做到这一点。

4

1 回答 1

2

你可以使用:or模式:

(match [x]
  [(:or false nil)] true
  [_] false)

true如果xfalsenil,则返回,false否则。

或者,您可以使用:guard模式:

(match [x]
  [(_ :when not)] true
  [_] false)

:when模式也可以工作(使用(defpred not)),但在这种情况下,它们可能很难正确处理,并且对守卫没有任何好处。

于 2013-07-15T17:01:38.663 回答