[英]Java-Clojure interop in REPL: 'require versus 'import a Java class
這個問題涉及clatrix Clojure庫[1]以及jblas Java庫[2](前者部分包含后者)。
我通過lein repl
目錄中的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
要求和導入具有非重疊用途:
我不認為目前有一種方法可以為java包添加別名,你可以做的最好的事情就是像使用Solve那樣導入它,以避免輸入包名。 您不能使用import,為其指定不同的包名稱。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.