我正在做仙人掌,我已经研究了五种不同的列表数据类型:
有些是我买的,但都是同时买的?是否有人将所有这些列表用于严格分离的目的?
发布于 2016-10-16 08:33:45
简短的回答是:是的。
很长的答案是:
由于函数式编程选择了正确的数据结构来表示您的数据,这通常是问题的一半,这就是为什么您会得到这么多不同的结构,并具有不同的特性。每个用例都有它的用例,并且在不同的方面都很有用。
发布于 2016-10-16 12:45:52
@michalmuskala在这里给出了一个很好的答案,也许我只是稍微扩展了一下。
a = [{:name, "Patryk"}],您可以拥有a = [name: "Patryk"]并使用a[:name]访问它。发布于 2016-10-16 18:18:44
答案将自下而上阅读:)
@michalmuskala在这里给出了很好的答案,“帕特诺瓦克完美地扩展了它。我在这里的主要目的是回答以下问题:“是否有人将所有这些清单都用于严格分开的目的?”
灵丹妙药(以及Erlang)都是关于模式匹配的。有了不同类型的列表,就很容易缩小每个特定情况下的模式匹配范围:
List主要用于递归;Erlang没有循环,而是执行递归调用。如果使用得当,它是高度优化的(尾递归)。通常匹配为[head | tail]。charlist用于“string”模式匹配,不管它的意思是什么。检查Erlang中的“他的名字的第一个字母是‘A’”将与[?A | rest] = "Aleksei" |> List.Chars.to_charlist进行模式匹配Tuple用于多或少相同实体的不同实例的模式匹配.失败/成功将分别作为元组{:ok, result}和{:error, message}返回,然后匹配模式。GenServer也简化了对不同消息的处理。Map将被匹配为%{name: "Aleksei"} = generic_input,以立即提取name。Keywords或多或少是相同的。等。
https://stackoverflow.com/questions/40068243
复制相似问题