[英]Why can't I reference result of (defrecord Foo [bar]) in REPL after (load-file “foofile.clj”)?
我的文件大致如下所示:
(ns foofile)
(defprotocol foo-protocol
"foo(lish example)"
(foo-method [this] "foo docs")
(defrecord Foo [biz])
(def foo (Foo. "baz"))
我啟動REPL並輸入
(load-file "foofile.clj")
它打印
#'foofile/foo
現在我可以引用foofile / foo和foofile / foo-protocol,但是當我嘗試foofile / Foo時,我得到了
java.lang.Exception: No such var: foofile/Foo (NO_SOURCE_FILE:0)
如果我手動輸入REPL,則相同(或基本相似)的代碼會非常花哨(特別是,我關注了此博客文章 )。 這里發生了什么? 在REPL中執行此操作與加載文件有什么不同?
您需要導入Foo,因為它是一個Java類:
(import 'foofile.Foo)
當您在一個repl中輸入代碼時,它起作用的原因是,您在引用Foo
(可能是名稱空間user
)位於聲明Foo的同一名稱空間中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.