4

这个问题涉及到 clatrix Clojure 库 [1] 以及 jblas Java 库 [2](前者部分包裹了后者)。

lein repl我通过在 clatrix 目录中启动 Clojure REPL ,该目录project.clj指定了对org.jblas. (这是 clatrix 与我的问题的相关程度。)

我可以参加importjblas 的课程,但我更喜欢require他们。

user> (import '[org.jblas DoubleMatrix Solve])
org.jblas.Solve

user> (. Solve solveLeastSquares (. DoubleMatrix rand 2 2) (. DoubleMatrix rand 2 1))
#<DoubleMatrix [1.965810; -1.044592]>

user> (require '[org.jblas Solve])
FileNotFoundException Could not locate org/jblas/Solve__init.class or org/jblas/Solve.clj on classpath:   clojure.lang.RT.load (RT.java:432)

我可以只使用requireClojure 库而不是 Java 库吗?我犯了标点错误吗?

理由:如果我可以org.jblas.Solve成为required 并别名为,比如说,S(仅作为一个例子),我可以简单地做(S/solveLeastSquares foo bar)我认为比点空间符号更好的方法。此外,在 clatrix 的源代码中都使用了斜线符号,并且在 REPL 中进行实验以简化复制粘贴时也可以使用它。

[1] 见https://github.com/tel/clatrix [2] 特别是它的Solve类:https://github.com/mikiobraun/jblas/blob/master/src/main/java/org/jblas/Solve。爪哇#L44

4

1 回答 1

4

Require 和 import 的用途不重叠:

  • Require 仅适用于 Clojure 命名空间。
  • import 仅适用于 java 类

我认为目前没有办法给 java 包起别名,你能做的最好的事情就是像使用 Solve 一样导入它,以避免输入包名。你不能使用导入,给它一个不同的包名。

于 2013-06-12T20:06:44.747 回答