2016-12-05 90 views
0

我有以下結構:訪問嵌套結構插槽

(defstruct track 
    size 
    env 
    startpos 
    endpositions) 

(defstruct state 
    pos 
    vel 
    action 
    cost 
    track 
    other) 

我有一個狀態,我試着去訪問endpositions(名單列表)

(setq coluna_final (nth 1 (nth 0 (state-track-endpositions st)))) 

,但我得到的錯誤:EVAL: undefined function STATE-TRACK-ENDPOSITIONS

我在做什麼錯?

+0

您可能需要使用'car'或'first'取代'第n 0'和'cadr'或'秒',而不是'第n個1'。 – sds

回答

2

第一個defstruct定義(除其他外)功能track-endpositions,第二個定義state-track。 Lisp無法知道後者返回track(即使您聲明插槽類型,它也不會定義您想要的功能)。

你可以自己做:

(defun state-track-endpositions (st) 
    (track-endpositions (state-track st))) 
+0

多數民衆贊成它!謝謝 – xicocana