不调用时,不能引用Java互操作方法

时间:2016-05-29 22:45:47

标签: clojure

我在Clojure中编写了一些函数来充当帮助者。现在,我正在编写使用Java随机生成器更容易使用的函数。

由于random-floatrandom-double几乎完全相同,除了调用的确切Java函数之外,我决定尝试分解相同的部分并使用结果函数:

(import '[java.util Random])

(defn- random-floating [f min max ^Random rand-gen]
  (let [r (f rand-gen)
        spread (- max min)
        rand (* spread r)]
    (+ rand min)))

; Errors at ".nextFloat" and ".nextDouble"
(defn random-float [min max ^Random rand-gen]
  (random-floating .nextFloat min max rand-gen)) 

(defn random-double [min max ^Random rand-gen]
  (random-floating .nextDouble min max rand-gen))


(defn random-boolean [rand-gen]
  (.nextBoolean rand-gen))       ; <<--- This works fine

问题是,我得到了未解决的符号&#34; .nextFloat.nextDouble上的错误,即使我直接调用它们,也会找到它们。

我尝试过限定他们(Random/.nextFloatjava.util.Random/.nextFloat),但都没有效果。

0 个答案:

没有答案