你可以使與MAKE-ARRAY
載體。你可以將其填充指針設置爲0,然後使用一個循環10個號碼添加到它與VECTOR-PUSH
:
(let ((vec (make-array 10 :fill-pointer 0)))
(dotimes (i 10 vec)
(format *query-io* "Number ~d/10: " (1+ i))
(finish-output *query-io*)
(vector-push (parse-integer (read-line *query-io*)) vec)))
你也可以達到同樣的是這樣的:
(make-array 10 :initial-contents
(loop
for i from 1 to 10
do (format *query-io* "Number ~d/10: " i)
do (finish-output *query-io*)
collecting (parse-integer (read-line *query-io*))))
但創建輸入的臨時列表。
而且,斯萬認爲,你可以使用MAP-INTO
:
;; If you don't want the number in the prompt, you can remove the LET
(let ((i 0))
(map-into (make-array 10)
(lambda()
(format *query-io* "Number ~d/10: " (incf i))
(finish-output *query-io*)
(parse-integer (read-line *query-io*)))))
記住,你需要FINISH-OUTPUT如果你想I/O到達用戶。某些I/O系統可能會被緩衝。 –
好點。添加。 – jkiiski
你也可以使用'map-into'來代替填充指針和'vector-push'。 – Svante