長的故事:動機
我有上SORT
或MAPCAR
打破了一些錯誤,一些(比如說,25)不是列表的CL碼。這告訴我我通過它們的數據結構有問題。所以,我把(BREAK)
放在發生錯誤的地方之前的代碼中。它看起來是這樣的:slime-inspector-eval:如何獲得檢查器中的綁定?
(sort
(progn
(break)
(mapcar (lambda (pair)
(list (car pair) (cdr pair)))
(hash-table-plist (state-removed state)))
#'<
:key #'car)
(爲了讓多一點背景,這裏的想法是哈希表(STATE-REMOVED STATE)
轉變爲通過鑰匙排序對列表,錯誤是不是HASH-TABLE-PLIST
我應該使用HASH-TABLE-ALIST
)
一旦代碼命中(BREAK)
它將我發送到調試器。在這個階段,我可以通過代碼,但我決定檢查STATE
。不幸的是,STATE
本身是通過WITH-SLOTS
獲得的 - 從另一個對象的插槽中獲取對象的宏,並且整個函數實際上是由宏的sketch
庫生成的......長話短說,得到(STATE-REMOVED STATE)
我需要通過檢查員的插槽訪問層。
TL; DR:實際問題
這裏是一個問題:現在我要打電話HASH-TABLE-PLIST
無論是在哪,我檢查的對象或該對象的插槽。我怎樣才能訪問其中的任何一個(僅用於比較,在Smalltalk調試器中,我總是可以訪問self
僞變量來獲取內容)?有slime-inspector-eval
,但我如何傳遞我沒有明確的本地綁定的東西?有關slime-inspector-eval
的文檔沒有多少說明。