2014-09-17 16 views
7

Trước đây tôi đã sử dụng tính năng "là yếu tố" của vòng lặp để lặp qua một chuỗi của một loại không xác định. Tôi chỉ phát hiện ra rằng "là các yếu tố của" không được cung cấp trong mọi thực hiện của Common Lisp và tôi tự hỏi nếu có bất kỳ cách sạch sẽ để lặp qua một chuỗi bằng cách sử dụng vòng lặp. Giải pháp tốt nhất mà tôi có thể đi kèm là ép buộc trình tự thành một danh sách và sau đó lặp lại điều đó.Làm thế nào để lặp qua một chuỗi trong Common Lisp với vòng lặp?

Trả lời

10

Không, LOOP không trực tiếp cung cấp tính năng này. Nếu triển khai LOOP của bạn có thể mở rộng (tiêu chuẩn cũng không nói gì cả), bạn có thể triển khai tính năng như vậy.

LOOP có mệnh đề để lặp qua danh sách - for item in list - và mệnh đề để lặp qua một vectơ - for e across vector - lưu ý rằng các chuỗi cũng là vectơ, mảng một chiều. Nhưng không phải cả hai cùng nhau.

Nếu không, hãy sử dụng MAP hoặc MAP-INTO để lặp qua chuỗi.

Macro ITERATE cung cấp tính năng như sau: for i in-sequence seq.

Các vấn đề liên quan