Erlang - написать шаблон, который будет связывать переменную со вторым элементом в этом кортеже {<0.206.0>, {rect, 10, 30}} - PullRequest
3 голосов
/ 23 июня 2010

Как мне написать шаблон, который будет связывать переменную со вторым элемент в этом кортеже {<0.206.0>, {rect, 10, 30}}?

т.е. «вещь вместо образца здесь», что приводит к Форма, имеющая значение {rect, 10, 30}. Pattern = {<0.206.0>, {rect, 10, 30}}

Это часть <0.206.0>, которая смущает меня.

Ответы [ 3 ]

8 голосов
/ 23 июня 2010

Так же просто, как это ...

{_, Shape} = {<0.206.0>, {rect, 10, 30}}.

Однако вы не можете создать идентификатор процесса из литерала, поэтому приведенный выше синтаксис неправильный, но попробуйте это в REPL ...

1> {_, Shape} = {self(), {rect, 10, 30}}.
{<0.31.0>,{rect,10,30}}
2> Shape.
{rect,10,30}
4 голосов
/ 23 июня 2010

<0.206.0> выглядит как PID.В любом случае, это только одна вещь, поэтому не думайте об этом.

Вы можете делать то, что предлагает dsmith, в зависимости от вашего контекста, или вы можете просто сделать это:

Shape = element(2, {<0.206.0>, {rect, 10, 30}}).
3 голосов
/ 23 июня 2010

Просто для дальнейшего использования, вы можете использовать функцию pid/0, чтобы "создать" определенный Pid:

1> Pid = pid(0,206,0).
<0.206.0>
2> {Pid, Shape} = {Pid, {rect, 10, 30}}.
{<0.206.0>,{rect,10,30}}
...