2009-02-11 36 views
9

tôi thấy mã này trong Erlang:Erlang, danh sách hiểu cú pháp

[X-$0 || X<-someFun()] 

Trong dòng mà tôi tìm thấy cú pháp -$0 rất hữu ích.

Tôi đã đọc mã và ước tính ý nghĩa của nó, nhưng tôi không hoàn toàn chắc chắn: liệu nó có chia tất cả các số không?

Tôi muốn xem giải thích hoặc trang người đàn ông của cú pháp đó nhưng tôi không thể tìm thấy nó. Có ai có thể cho tôi xem trang đúng không?

Trả lời

17

Mã nào đang thực hiện lấy đầu ra từ someFun() (cần trả lại danh sách) và cho mỗi phần tử trong danh sách, nó gán giá trị của phần tử cho biến X và sau đó trừ giá trị ASCII của ký tự 0 từ giá trị đó. Danh sách kết quả sau đó là giá trị của toàn bộ biểu thức đó.

Những gì nó đang thực hiện, và tôi đã viết mã này hàng chục lần), giả sử rằng someFun/0 là hàm trả về chuỗi có chỉ chữ số trong đó, sau đó chuyển chuỗi đó thành danh sách các chữ số. Vì vậy, nếu someFun() trả lại "12345", kết quả của việc hiểu danh sách này là [1, 2, 3, 4, 5].

Nếu bạn đã quen thuộc với khái niệm về hàm map (như trong MapReduce), thì điều này sẽ nghe khá quen thuộc ngay bây giờ.

trang Wikibooks này trông giống như một giới thiệu tốt vào danh sách comprehensions Erlang:

http://en.wikibooks.org/wiki/Erlang_Programming/List_Comprehensions

cuốn sách Joe Armstrong của "Lập trình Erlang", từ Bookshelf Pragmatic, (http://pragprog.com/titles/jaerlang/programming-erlang) cũng bao gồm comprehensions danh sách thực sự tốt (cùng với mọi thứ khác liên quan đến Erlang). cuốn sách tuyệt vời, rất khuyến khích vv

1

Các trang tài liệu bình thường đối với comprehensions danh sách là trong Erlang Reference Manual Mục 6.22 và trong Programming Examples Mục 3.

Cả hai đang ở trên main documentation page (bấm vào Lập trình Thư mục Erlang trên thanh menu bên trái).

Tài liệu Erlang là fab - nó chỉ là cách bố trí của nó là một chút shonky ...

+0

Liên kết chết, ya có thể muốn cập nhật điều này. – EvilTeach

+0

@EvilTeach * Liên kết Shonky. – providence

+0

Các liên kết được cố định theo yêu cầu. –

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