Erlang:拆分consult()将值返回到子列表中

时间:2018-04-22 18:25:25

标签: list erlang tuples

我有一个calls.txt:

{john,[jill,joe,bob]}。

{jill,[bob,joe,bob]}。

{sue,[jill,jill,jill,bob,jill]}。

{bob,[john]}。

{乔,[sue]}。

我有一个函数read()

read() -> 
    List = file:consult("calls.txt"),

调用read()返回一个包含5个元组的列表

{ok,[{john,[jill,joe,bob]},
 {jill,[bob,joe,bob]},
 {sue,[jill,jill,jill,bob,jill]},
 {bob,[john]},
 {joe,[sue]}]}

我想将每个元组绑定到一个变量(X1,X2,X3,X4,X5)

我尝试将列表拆分为4个头和一个尾

 read() -> 
List = file:consult("calls.txt"),
[X1,X2,X3,X4|X5] = List.

然而,它给了我错误:

** exception error: no match of right hand side value 

如何将返回的列表从consult()拆分为5个元组?

1 个答案:

答案 0 :(得分:3)

返回值为{ok, <list of 5 elements>},因此您需要使用的模式为{ok, [X1, X2, X3, X4, X5]}

{ok, [X1, X2, X3, X4, X5]} = file:consult("calls.txt").