嘿傢伙,簡單的問題...表單中的連續調用/評估?
使用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