2015-04-13 2 views
1

Вот пример, что я пытаюсь достичь:Erlang Вставка кортежи в списке

СЛУЧАЙ I

>Fn = fun(X) -> {X, 3} end. 
>A = {{1,2}, {3, 4}, Fn(8)}. 
>{{1,2},{3,4},{8,3}} 

Это работало довольно well.But в случае нескольких кортежей

СЛУЧАЙ II

>Fn2 = fun(X) -> {X, 3},{7,5} end. 
>A1 = {{1,2}, {3, 4}, Fn2(8)}. 
>{{1,2},{3,4},{7,5}} 

Пожалуйста, предложите мне решение, так что я могу достигнуть следующий результат для СЛУЧАЙ II

>{{1,2},{3,4},{8, 3}, {7,5}} 

ответ

6

во-первых, чтобы объяснить, что происходит во втором случае: когда вы пишете Fn2 = fun(X) -> {X, 3},{7,5} end, это означает, что «данный X, создавать и выбросить кортеж {X, 3}, а затем вернуть кортеж {7, 5}.

Вы также, кажется, путаете кортежи и списки. Кортежи не используются таким образом; они предназначены для структур фиксированного размера. Если вы действительно хотите получить список, это легко:

> Fn2 = fun(X) -> [{X, 3},{7,5}] end. 
> A1 = [{1,2}, {3, 4}] ++ Fn2(8). 
[{1,2},{3,4},{8,3},{7,5}] 
> A2 = [{1,2}] ++ Fn2(8) ++ [{3, 4}]. 
[{1,2},{8,3},{7,5},{3,4}] 
> A3 = Fn2(8) ++ [{1,2}, {3, 4}]. 
[{8,3},{7,5},{1,2},{3,4}] 
+0

Спасибо за предложение, я это понимаю сейчас. Еще один запрос - могу ли я поместить 'Fn2 (8)' в определенную позицию на 1-й или 2-й позиции или в конце. – trex

+0

@trex Да, вы можете. См. Редактирование. –

+0

@ Алексей Романов- Спасибо. Работал как шарм !! – trex

3

Я думаю, вам нужно использовать список ([...]) вместо кортежа ({...}):

> Fn3 = fun(X) -> [{X, 3},{7,5}] end. 
> [{1,2}, {3, 4}| Fn3(8)].    
[{1,2},{3,4},{8,3},{7,5}] 
+0

Спасибо за ответ! Могу ли я поставить Fn3 (8) в определенное положение на 1-й или 2-й позиции или в конце. – trex

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