首页 > 解决方案 > 如何在当前命名空间中应用符号 in use 子句

问题描述

我正在审查core.match 测试

(ns clojure.core.match.test.regex
  (:use [clojure.core.match :only [match]])
  (:use clojure.core.match.regex)
  (:use clojure.test))

(deftest basic-regex
     (is (= (match ["asdf"]
                   [#"asdf"] 1
                   :else 2)
            1)))

当我在 clojure.1.10 中运行这些代码时,但想知道为什么

 (:use clojure.core.match.regex)

有效吗?我可以理解match正在使用,如果我不包含regex,行为当然会失败。

谢谢你的帮助。

标签: clojurenamespaces

解决方案


当 clojureuse命名空间时,它将执行其中的每个语句。所以在那个正则表达式文件中

(extend-type Pattern
  mp/ISyntaxTag
 (syntax-tag [_] ::m/regex))

模式行为由extend-type


推荐阅读