这个问题涉及clatrix Clojure库[1]以及jblas Java库[2](前者部分包装后者)。
我通过clatrix目录中的lein repl
启动Clojure REPL,其project.clj
指定对org.jblas
的依赖关系。 (这是clatrix与我的问题相关的程度。)
我能够import
jblas'课程,但我想改为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)
我可以只require
Clojure库而不是Java库吗?我是否出现了标点符号错误?
理由:如果我可以org.jblas.Solve
为require
d并且别名,例如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.java#L44
答案 0 :(得分:4)
要求和导入具有非重叠用途:
我认为目前没有办法为java包添加别名,你可以做的最好的事情就是像使用Solve一样导入它以避免输入包名。您不能使用import,为其指定不同的包名称。