回覆列表
  • 1 # 陽光魯寧

    (do ((i 0 (1+ i)))

    ((= i n) arr)

    (do ((j 0 (1+ j)))

    ((= j n))

    (setf (aref arr i j) (read)))

    這樣我是讀取一個二維陣列arr。i先賦值為0,接著判斷(= i n)是否為真,如果是,則退出,返回arr;如果非真,則執行迴圈體,這裡是巢狀的do語句。執行完這個巢狀的do語句後,i將被賦值為(1+ i),i的值被更新,接著再去判斷(= i n)是否為真……直到它為真的時候,退出迴圈,執行這個判斷語句後的表示式,將其值作為do語句值返回。

    (dolist (x "(5 2 0 1 3 1 4) s)

    (setf s (+ s x))

    這程式碼功能是把一些數加起來。x依次緊跟其後的列表中的每一個值,然後執行迴圈體。最後把s返回。

    任何語言上的問題,可以直接找《Ansi Common Lisp》的最後的索引,索引附錄很好很強大。

  • 中秋節和大豐收的關聯?
  • 出國打工去日本做服裝一年能掙多少錢?