代码之家  ›  专栏  ›  技术社区  ›  cryptic_star

Clojure的:gen类和双数组

  •  3
  • cryptic_star  · 技术社区  · 14 年前

    我正在尝试:生成类afn,它以一个2D的双倍数组作为输入。我已经看过帖子和解决方案了 here 关于一个类似的话题,但我仍然无法提出一个有效的解决方案。

    (ns gui.heatmap
      (:gen-class
        :name gui.Heatmap
        :methods [[heat-map2 ["[[D"] org.jfree.chart.JFreeChart]]))
    
    (defn foo [dbl-array]
      ...)
    

    我使用 "[[D" 基于使用 type 根据我的意见。这可以很好地编译成一个.class文件。

    现在,当我移到另一个.clj文件时,我有以下内容。

    (ns ...
      (import (gui.Heatmap)))
    
    (defn bar [args]
      ...
      (.foo
        (into-array
          (vector
            (double-array <list of numbers>)
            (double-array <list of numbers>)
            (double-array <list of numbers>)))))
    

    当我打电话的时候 bar 从repl中,我得到以下错误:

    有什么想法吗?

    2 回复  |  直到 7 年前
        1
  •  3
  •   kotarak    14 年前

    您缺少对象。 (.foo (into-array ...)) (.foo (Heatmap.) (into-array...))

    注意,你也应该 require gui.Heatmap 命名空间。否则,如果 ... gui.热图 要求

    编辑:

    澄清事情。

    • 修复丢失的对象
    • 修正:进口条款(也是错误的)
    (ns gui.heatmap
      (:gen-class
        :name gui.Heatmap
        :methods [[heat-map2 ["[[D"] org.jfree.chart.JFreeChart]]))
    
    (defn -foo [dbl-array]
      ...)
    
    (ns ...
      (import gui.Heatmap))
    
    (defn bar [args]
      ...
      (.foo
        (Heatmap.)
        (into-array
          (vector
            (double-array )
            (double-array )
            (double-array )))))
    
        2
  •  2
  •   dbyrne    14 年前

    -foo 而不是 foo . 要么这样要么改变主意 :prefix :gen-class .

    推荐文章