2009-02-11 3 views
9

Я видел этот код в Erlang:Erlang, список понимание синтаксиса

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

В этой строке я нашел синтаксис -$0 очень полезно.

Я прочитал код и оценил, что это значит, но я не совсем уверен: он разделяет все числа?

Я бы хотел увидеть объяснение или страницу руководства этого синтаксиса, но я не могу его найти. Может ли кто-нибудь показать мне правильную страницу?

ответ

17

Что делает этот код, является вывод из someFun() (которому необходимо вернуть список), и для каждого элемента в списке он присваивает значение элемента переменной X, а затем вычитает значение ASCII символа 0 от этого значение. Итоговый список - это значение этого целого выражения.

Что он делает, на практике (и я сам этот код написал десятки раз), предполагается, что someFun/0 - это функция, которая возвращает строку с просто цифрами в ней, а затем преобразует эту строку в список цифры. Итак, если someFun() вернулся «12345», результатом этого списка является [1, 2, 3, 4, 5].

Если вы знакомы с концепцией функции map (как, например, MapReduce), то это должно звучать довольно хорошо.

Эта Викиучебники страница выглядит как хорошее введение в список Erlang постижений:

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

книга Джо Армстронга «Программирование Erlang», от прагматической Книжной полки (http://pragprog.com/titles/jaerlang/programming-erlang) также охватывает списковую очень хорошо (по со всем, что связано с Эрланом). Отличная книга, очень рекомендуется, и т.д.

1

нормальная документация страница списковых находится в Erlang Reference Manual разделе 6.22 и в Programming Examples Раздел 3.

Оба они находятся на main documentation page (нажмите на папку программирования Erlang на в левой панели меню).

Документация Erlang является ФАБ - это только его макет чуть shonky ...

+0

неработающие ссылки, я, возможно, захотите обновить это. – EvilTeach

+0

@EvilTeach * Шонки ссылки. – providence

+0

Ссылки исправлены в соответствии с запросом. –

Смежные вопросы