嘿家伙,简单的问题...表单中的连续调用/评估?
使用XLISP编写程序,但我似乎遇到了一个简单的基本问题,我似乎无法解决:也许有人有一个快速修复。
我想写一个if语句谁是then-clause评估多个表单并返回最后一个值。
在例如:
(setq POSITION 'DINING-ROOM)
(defun LOOK (DIRECTION ROOM) ...)
(defun SETPOS (ROOM) ...)
(defun WHERE() ...)
(defun MOVE (DIRECTION)
(if (not(equal nil (LOOK DIRECTION POSITION))) ; If there is a room in that direction
(; Then-block: Go to that room. Return where you are.
(SETPOS (LOOK DIRECTION ROOM))
(WHERE)
)
(; Else-block: Return error
(list 'CANT 'GO 'THERE)
)
)
意图的逻辑等价物是:
function Move (Direction)
{
if(Look(Direction, Room) != null)
{
SetPos(Look(Direction,Room));
return Where();
}
else
{
return "Can't go there";
}
}
(道歉为穷人web的格式)
我的问题是:
(
(SETPOS (LOOK DIRECTION ROOM))
(WHERE)
)
I只想返回WHERE的评估,但我需要先执行SETPOS函数。 XLISP不喜欢额外的括号:如果我删除外部集合,我的WHERE列表就成为我的其他人(我不想那样)。如果我删除了SETPOS和WHERE的集合,它将WHERE视为SETPOS的参数;我也不想那样。
那么,我该如何评估第一个,然后第二个,然后返回最后评估的值?
类似的问题在这里:http://stackoverflow.com/questions/2852249/can-you-execute-multiple-statements-in-with-a-if-statement – 2010-05-21 19:23:24