同时使用Incanter和Clojure汤



我正在学习Clojure - 这很有趣!我正在尝试在同一文件中使用Incanter和Clojure Soup:

(require '[jsoup.soup :as soup])
(use '(incanter core stats io charts datasets))

我收到以下错误:

CompilerException java.lang.IllegalStateException: $ already refers to: #'jsoup.soup/$ in namespace: user, compiling

我想我明白为什么,但我该如何解决这个问题?感谢这个网站和它的所有大师!

谢谢。

如果您实际上只使用其中一个$函数,那么您可以排除另一个函数

(ns myproject.example
   (:require [jsoup.soup :as soup]
             [incanter [core :refer :all :exclude [$]]
                       [stats :refer :all] 
                       [io :refer :all] 
                       [charts :refer :all] 
                       [datasets :refer :all]]))

或者你可以采取显式命名要在命名空间中引用的 var 并通过 namespace-alias/function 显式调用其他变量的方法,这看起来更像这样:

(ns myproject.example
   (:require [jsoup.soup :as soup]
             [incanter [core :refer [$ ... and others here ...] 
                             :as incanter]
                       [stats :as stats] 
                       [io :as io] 
                       [charts :as charts] 
                       [datasets :as dataset]]))

现代 clojure 代码不鼓励使用其他命名空间use方法,并且已被包含在引用表单中,因此我在这些示例中使用该形式。还强烈建议将引用表单放在命名空间声明中。

相关内容

  • 没有找到相关文章

最新更新