在《gen-class的解析和使用方法》中对:gen-class
进行了介绍后,我使用leiningen
获取了类文件。
- 运行
leon new pinger
创建一个项目。 - 进入
src
目录并创建一个名为some
的文件夹,并在其中创建一个Example.clj
文件。 - 在
project.clj
文件中添加:aot [some.Example]
(或:aot :all
)。
Example.clj
内容如下:
(ns some.Example
(:gen-class))
(defn -toString
[this]
"Hello, World!")
我执行了lein compile
命令,以获取位于target
目录中的类。
接着,我使用lein repl
命令来执行这段代码。
(-toString (some.Example.)) ; should return "Hello, World!"
然而,我收到了这个错误信息。
CompilerException java.lang.RuntimeException: Unable to resolve symbol:
-toString in this context, compiling:(/private/var/folders/nw/dmb7jh3d2hq89296z2gnntqm0000gn/T/form-
init7145760420048735997.clj:1:1)
.toString
可以正常使用。
user=> (.toString (some.Example.))
"Hello, World!"
该网站解释说,
-toString
和.toString
应该得到相同的结果,但我只有使用.toString
才能得到正确的结果。在Clojure中,
-toString
和.toString
之间有什么区别?为什么在这个例子中-toString
会引发错误?