我對lisp很陌生,對java也很新穎。我正在研究java中的一個簡單的遊戲,我認爲在我通過REPL進行編碼時與遊戲進行交互會很有趣。我一直在關注Practical Common Lisp,並且我有基本功能結構的知識。我開始使用武裝熊的Common Lisp - 在Java虛擬機上運行的實現 - 並且能夠用於創建圖形用戶界面,如代碼的一些基本功能:但是我無法弄清楚如何麻煩與武裝熊普通lisp - 調用用戶定義的類從repl?
(defconstant +jframe+ "javax.swing.JFrame")
(defun make-frame (length width &key visible)
"Create a +jframe+"
(let ((frame (jnew (jconstructor +jframe+))))
(jcall (jmethod +jframe+ "setSize" "int" "int")
frame length width)
(if visible (frame-is-visible t frame))
frame))
從lisp訪問用戶定義的類。作爲一個整體的實現似乎很少記錄,我發現難以從lisp內部開始使用java特定的東西。例如,我有一個名爲「Character」的編譯字符類。但是當我調用(jclass「Character」)時,我得到「class not found」錯誤。是否有可能讓abcl從lisp內部知道我的課程?
最近的ABCL手冊:https://code.google.com/p/abcl-dynamic-install/downloads/detail?name=abcl-manual-20120205a.pdf 可能最好問ABCL的具體問題和建議對ABCL郵件列表進行改進。請參閱http://common-lisp.net/project/armedbear/ – 2012-07-12 07:03:01
請澄清:你有哪些類 - jars中的Java類或者'defclass'定義的Lisp CLOS類? – 2012-07-13 04:52:03
Java中的所有類都有程序包前綴。所以你應該提供類似'(jclass「my.package.Character」)'的東西 – 2012-07-16 12:34:26