2016-12-05 88 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