В Erlang это ... ну, это не назначение, это сопоставление с образцом (видя, как есть никакого назначения, как такового, в Эрланге).
$ erl
Erlang R14B (erts-5.8.1) [source] [64-bit] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:true]
Eshell V5.8.1 (abort with ^G)
1> [H1, H2, H3| Rest] = [1,2,3,4,5].
[1,2,3,4,5]
2> H1.
1
3> H2.
2
4> H3.
3
5> Rest.
[4,5]
Почему это называется «сопоставление образцов»? Потому что на самом деле это соответствующие шаблоны. Смотри:
6> [1,2,3,4,A] = [1,2,3,4,5].
[1,2,3,4,5]
7> A.
5
8> [1,2,3,4,A] = [1,2,3,4,6].
** exception error: no match of right hand side value [1,2,3,4,6]
В первом мы сделали то, что фактически сводится к утверждению о том, что список будет начинаться с [1,2,3,4]
и что пятое значение может быть вообще ничего, но, пожалуйста, связать его в несвязанной переменной A
. Во втором мы сделали то же самое, за исключением того, что A
теперь привязаны, поэтому мы явно ищем список [1,2,3,4,5]
(потому что A
сейчас 5
).
Прохладный особенность? В самом деле? Никогда не слышал об этом раньше, но я нахожу это только запутанным. Вскоре нам понадобятся некоторые инструменты, чтобы сделать код «программистом читаемым». – Damien
@Damien: Ничего себе, способ слишком остро реагировать. –
@ Damien: [blub] (http://www.paulgraham.com/avg.html) много? –