4

この質問には、clatrix Clojure ライブラリ [1] と jblas Java ライブラリ [2] が含まれます (前者は後者を部分的にラップします)。

への依存関係lein replを指定する clatrix ディレクトリでClojure REPL を開始します。(これは、私の質問に対するclatrixの関連性の範囲です。)project.cljorg.jblas

私は jblas のクラスを実行できますが、代わりにそれらを使用しimportたいと思います。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)

requireJava ライブラリではなく、Clojure ライブラリのみを使用できますか? 句読点の間違いですか?

理論的根拠: もし私がd になり、たとえば (例として) にエイリアスさorg.jblas.Solveれることができれば、ドットスペース表記よりも優れていると思うことを単純に行うことができます。また、スラッシュ表記は clatrix のソース コード全体で使用されており、コピペを容易にするために REPL で実験する際にも使用するとよいでしょう。requireS(S/solveLeastSquares foo bar)

[1] https://github.com/tel/clatrixを参照 [2] 特にそのSolveクラス: https://github.com/mikiobraun/jblas/blob/master/src/main/java/org/jblas/Solve. Java#L44

4

1 に答える 1

4

Require と import の用途は重複していません。

  • Require は Clojure 名前空間専用です。
  • インポートはJavaクラス専用です

現時点では、Java パッケージに別名を付ける方法はないと思います。パッケージ名の入力を避けるために、Solve で行っているようにインポートするのが最善の方法です。インポートを使用することはできません。別のパッケージ名を付けてください。

于 2013-06-12T20:06:44.747 に答える