Erlang函数表示returns两个值
Erlang function that returns two values
我有 Erlang 函数 returns 列表的最后一个元素
lastElement([H|[]]) ->H;
lastElement([H|T]) ->lastElement(T).
和一个函数 returns 没有最后一个元素的列表
withoutLastElement([H|[]], Result) ->Result;
withoutLastElement([H|T]) ->withoutLastElement(T, [H|Result]).
所以我浏览同一个列表两次,为了提高效率我只想做一个函数 returns 列表的最后一个元素和 returns 这个列表没有这个元素一次浏览,这在另一种语言中很容易,但我不能在 Erlang 中做到这一点,所以请提供帮助,谢谢大家。
您通常 return 元组中的两个值:
list_and_last(List) ->
list_and_last(List, []).
list_and_last([H], Result) ->
{H, Result};
list_and_last([H|T], Result) ->
list_and_last(T, [H|Result]).
用 [1,2,3]
return 调用 list_and_last
{3,[2,1]}
。
您可以简单地反转列表:
List = [1, 2, 3, 4, 5, 6],
[Last | Rest] = lists:reverse(List)
在 Erlang 中你可以 return 一个元组,所以你只需定义一个包含最后一个元素和列表的元组:
... -> {last_element, list}
您使用模式匹配检索值:
{Element, List} = last_element_and_new_list(The_List)
最后一个元素和列表将绑定到各自的变量。请注意,您可以 return 一个元组中的两个以上的值。
我有 Erlang 函数 returns 列表的最后一个元素
lastElement([H|[]]) ->H;
lastElement([H|T]) ->lastElement(T).
和一个函数 returns 没有最后一个元素的列表
withoutLastElement([H|[]], Result) ->Result;
withoutLastElement([H|T]) ->withoutLastElement(T, [H|Result]).
所以我浏览同一个列表两次,为了提高效率我只想做一个函数 returns 列表的最后一个元素和 returns 这个列表没有这个元素一次浏览,这在另一种语言中很容易,但我不能在 Erlang 中做到这一点,所以请提供帮助,谢谢大家。
您通常 return 元组中的两个值:
list_and_last(List) ->
list_and_last(List, []).
list_and_last([H], Result) ->
{H, Result};
list_and_last([H|T], Result) ->
list_and_last(T, [H|Result]).
用 [1,2,3]
return 调用 list_and_last
{3,[2,1]}
。
您可以简单地反转列表:
List = [1, 2, 3, 4, 5, 6],
[Last | Rest] = lists:reverse(List)
在 Erlang 中你可以 return 一个元组,所以你只需定义一个包含最后一个元素和列表的元组:
... -> {last_element, list}
您使用模式匹配检索值:
{Element, List} = last_element_and_new_list(The_List)
最后一个元素和列表将绑定到各自的变量。请注意,您可以 return 一个元组中的两个以上的值。