Я проверил операторов веб-сайтов erlang и т. д., но не могу найти, что || и | Означает.
Я где-то читал, что || означает «такой, что», но что означает всего один «|»?
Я проверил операторов веб-сайтов erlang и т. д., но не могу найти, что || и | Означает.
Я где-то читал, что || означает «такой, что», но что означает всего один «|»?
|
— оператор «против»: он помещает элемент перед списком:
1> [1 | [2,3]].
[1,2,3]
2> [[1, 2] | [3,4,5]].
[[1,2],3,4,5]
||
используется в списках. В простейшей форме его можно использовать как сокращение для map
:
3> [2 * X || X <- [1,2,3]].
[2,4,6]
Но это становится намного удобнее, когда вы хотите написать несколько генераторов, создающих декартово произведение:
4> [{X, Y} || X <- [1,2,3], Y <- [4, 5, 6]].
[{1,4},{1,5},{1,6},{2,4},{2,5},{2,6},{3,4},{3,5},{3,6}]
Вы также можете сделать filter
по пути. Сравнивать:
5> [X+Y || X <- [1,2,3], Y <- [4,5,6]].
[5,6,7,6,7,8,7,8,9]
to:
6> [X+Y || X <- [1,2,3], Y <- [4,5,6], X+Y > 6].
[7,7,8,7,8,9]
Оператор |
необходим в том смысле, что это канонический способ создания нового списка из существующего головного элемента и хвоста списка. Та же нотация работает и при сопоставлении с образцом, т. е. таким же образом вы деконструируете список.
С другой стороны, списковые включения — это в основном синтаксический сахар: они могут быть написаны с использованием обычных приложений-функций и, следовательно, не являются фундаментальными для языка. Но они могут значительно улучшить читаемость, избавившись от синтаксического шума, имитируя понимание множества, например математическую нотацию, непосредственно в языке.