List 列表中元素的Erlang更改值

List 列表中元素的Erlang更改值,list,replace,erlang,tuples,List,Replace,Erlang,Tuples,Hello有没有办法在Erlang中更改列表头的值 Hd -> store2(Key, N,[New|List],New,false) 这是我即将更改的New将新元素更改为列表的头元素 store(Key, N, TupleList, New) when is_integer(N), N > 0, is_tuple(New) -> store2(Key, N, TupleList, New, false). store2(_Key,_N,[], New, false) -

Hello有没有办法在Erlang中更改列表头的值

 Hd -> store2(Key, N,[New|List],New,false)
这是我即将更改的New将新元素更改为列表的头元素

store(Key, N, TupleList, New) when is_integer(N), N > 0, is_tuple(New) ->
store2(Key, N, TupleList, New, false).

store2(_Key,_N,[], New, false) -> [New];
  store2(Key, N,List, New, false) -> case fetch(Key, N, List) of
     [] -> List;
     false -> List++[New];
     Hd -> store2(Key, N,[New|List],New,false)
   end.

为了进一步澄清,我使用了一个名为fetch的函数,我定义了该函数来查找要替换为另一个元素的元素,该元素是
New
,只需在
列表
的末尾添加新的头

[New|tl(List)]
您通常将其编写为模式匹配

some_function(..., [_Old|Tail] = _List, ...)->
    ...
    NewList = [New|Tail],
    ...

只需在
列表
的末尾添加新的头即可

[New|tl(List)]
您通常将其编写为模式匹配

some_function(..., [_Old|Tail] = _List, ...)->
    ...
    NewList = [New|Tail],
    ...

[A | B]
A
预先添加到列表
B
中,这样应该可以工作。这对你不管用吗?你得到了什么结果?你期望得到什么?我实际上没有得到结果,但当我使用
[New]++List:delete(Hd,List)
时,我得到了错误的结果。你说的“没有结果”是什么意思
[New | List]
至少会返回一个列表。我所说的无结果是指它进入一个无限循环
[a | B]
a
预先添加到列表
B
,因此这应该是可行的。这对你不管用吗?你得到了什么结果?你期望得到什么?我实际上没有得到结果,但当我使用
[New]++List:delete(Hd,List)
时,我得到了错误的结果。你说的“没有结果”是什么意思<代码>[New | List]至少会返回一个列表。没有结果意味着它进入无限循环