Lisp - 迴圈



在某些情況下,您可能需要執行一段程式碼多次。迴圈語句允許我們多次執行一個語句或一組語句,以下是大多數程式語言中迴圈語句的一般形式。

Loops

LISP 提供以下型別的結構來處理迴圈需求。點選以下連結檢視其詳細資訊。

序號 結構 & 描述
1 loop

loop 結構是 LISP 提供的最簡單的迭代形式。在其最簡單的形式中,它允許您重複執行某些語句,直到找到一個return語句。

2 loop for

loop for 結構允許您實現類似於 for 迴圈的迭代,這在其他語言中最常見。

3 do

do 結構也用於使用 LISP 執行迭代。它提供了一種結構化的迭代形式。

4 dotimes

dotimes 結構允許迴圈執行固定次數的迭代。

5 dolist

dolist 結構允許遍歷列表的每個元素。

優雅地退出塊

blockreturn-from 允許您在發生任何錯誤時優雅地退出任何巢狀塊。

block 函式允許您建立一個命名塊,其主體由零個或多個語句組成。語法為:

(block block-name(
...
...
))

return-from 函式接受一個塊名稱和一個可選的(預設為 nil)返回值。

以下示例演示了這一點:

示例

建立一個名為 main.lisp 的新原始碼檔案,並在其中鍵入以下程式碼:

main.lisp

; define a function accepting a flag
(defun demo-function (flag)
   ; print the block name
   (print 'entering-outer-block)
   ; start a block
   (block outer-block
      ; print the block name   
      (print 'entering-inner-block)
      (print (block inner-block
         ; if flag is true        
         (if flag
            ; return 3		 
            (return-from outer-block 3)
            ; return 5			
            (return-from inner-block 5)
         )
         (print 'This-wil--not-be-printed))
      )
      ; print block name 
      (print 'left-inner-block)
      ; print block name	  
      (print 'leaving-outer-block)
   t)
)
; call the function
(demo-function t)
; terminate printing
(terpri)
; call the function
(demo-function nil)

當您點選“執行”按鈕或鍵入 Ctrl+E 時,LISP 會立即執行它,並返回以下結果:

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 

ENTERING-OUTER-BLOCK 
ENTERING-INNER-BLOCK 
5 
LEFT-INNER-BLOCK 
LEAVING-OUTER-BLOCK
廣告