English 中文(简体)
埃尔兰——要素和清单
原标题:Erlang - element and list
  • 时间:2011-10-26 12:54:59
  •  标签:
  • list
  • erlang

I m New to erlang. 我想知道,如何写出一份清单中第一个N要素的回报职能?

我尝试:

    take([],_) -> [];
    take([H|T],N) when N > 0 -> take([H,hd(L)|tl(T)], N-1);
    take([H|T],N) when N == 0 -> ... (I m stuck here...)

任何 h? th

最新情况:我知道有一个称为“名单”的职能,但我需要说明如何用我个人来书写这一职能。

我最后说出答案:

-module(list).
-export([take/2]).

take(List,N) -> take(List,N,[]).
take([],_,[]) -> [];
take([],_,List) -> List;
take([H|T], N, List) when N > 0 -> take(T, N-1, lists:append(List,[H]));
take([H|T], N, List) when N == 0 -> List.
最佳回答

简单的解决办法是:

take([H|T], N) when N > 0 ->
    [H|take(T, N-1)];
take(_, 0) -> [].

如果名单上没有足够内容,这将产生错误。

当你使用蓄水器时,你通常不会把元素推到底,因为这非常低效(你每次复制整个清单)。 通常,你将以<条码>(<>>(>Hist”):逆向(List),以便按正确的顺序返回。

take(List, N) -> take(List, N, []).

take([H|T], N, Acc) when N > 0 ->
    take(T, N-1, [H|Acc]);
take(_, 0, Acc) -> lists:reverse(Acc).

累积器版本为尾补,这是一个好兆头,但你需要做一个外向,消除一些好处。 我认为,第一版更为清楚。 两者都没有明确的理由。

问题回答

在埃尔兰,take/code> is specified lists:sublist :

L = [1, 2, 3, 4];
lists:sublist(L, 3).   % -> [1, 2, 3]




相关问题
Finding a class within list

I have a class (Node) which has a property of SubNodes which is a List of the Node class I have a list of Nodes (of which each Node may or may not have a list of SubNodes within itself) I need to be ...

How to flatten a List of different types in Scala?

I have 4 elements:List[List[Object]] (Objects are different in each element) that I want to zip so that I can have a List[List[obj1],List[obj2],List[obj3],List[obj4]] I tried to zip them and I ...

How to remove unique, then duplicate dictionaries in a list?

Given the following list that contains some duplicate and some unique dictionaries, what is the best method to remove unique dictionaries first, then reduce the duplicate dictionaries to single ...

Is List<> better than DataSet for UI Layer in ASP.Net?

I want to get data from my data access layer into my business layer, then prepare it for use in my UI. So i wonder: is it better to read my data by DataReader and use it to fill a List<BLClasses&...

What is the benefit to using List<T> over IEnumerable<T>?

or the other way around? I use generic lists all the time. But I hear occasionally about IEnumerables, too, and I honestly have no clue (today) what they are for and why I should use them. So, at ...

灵活性:在滚动之前显示错误的清单

我有一份清单,在你滚动之前没有显示任何物品,然后这些物品就显示。 是否有任何人知道如何解决这一问题? 我尝试了叫人名单。

Converting Dictionary to List? [duplicate]

I m trying to convert a Python dictionary into a Python list, in order to perform some calculations. #My dictionary dict = {} dict[ Capital ]="London" dict[ Food ]="Fish&Chips" dict[ 2012 ]="...