Erlang:将consult()返回值拆分为子列表并绑定至变量
解决Erlang中列表元素的变量绑定问题
嘿,这问题用Erlang最核心的模式匹配就能轻松搞定!
你现在的read()函数返回的是带ok标记的元组结构:{ok,[{john,[jill,joe,bob]}, {jill,[bob,joe,bob]}, {sue,[jill,jill,jill,bob,jill]}, {bob,[john]}, {joe,[sue]}]}。要把列表里的5个元组分别绑定到X1到X5,直接对整个返回值做模式匹配就行:
{ok, [X1, X2, X3, X4, X5]} = read().
执行这行代码后,每个变量就会精准绑定对应元组:
X1→{john,[jill,joe,bob]}X2→{jill,[bob,joe,bob]}X3→{sue,[jill,jill,jill,bob,jill]}X4→{bob,[john]}X5→{joe,[sue]}
你之前尝试拆分4个头部加尾部没成功,大概率是没先处理外层的{ok, List}包裹结构——上面的写法一步完成了“取出列表”和“拆分元素”两个操作,既简洁又贴合Erlang的设计风格。
内容的提问来源于stack exchange,提问作者Mike J
相关产品推荐
相关产品推荐

