【问题标题】:Why can I not rewrite in a list in Erlang?为什么我不能在 Erlang 的列表中重写?
【发布时间】:2020-11-21 18:55:09
【问题描述】:

我有一个列表L = [1,2,3].

我在 L 上执行以下操作:

lists:sublist(L,2) ++ [10] ++ lists:nthtail(3,L).

我不想将结果存储在新列表中,而是将结果存储在 L 本身中。但是,当我这样做时,我得到了明显的错误:** exception error: no match of right hand side value [1,2,300]

我不想使用新变量,我想用 L 本身重写。有可能吗?

【问题讨论】:

  • 我了解到您正在学习 Erlang,如果是这样,我建议您使用 Fred Hebert 的优秀网站:learnYouSomeErlang。 Erlang 官方文档作为参考非常有用,但不适合学习。干得好,玩得开心!
  • 这与learnyousomeerlang.com/introduction 是同一本书,即使对于初学者来说,这个资源也很漂亮!非常感谢您的指导,我指的是同一个资源,随着我的前进,Erlang 已经开始看起来很方便了!

标签: list exception error-handling erlang self-modifying


【解决方案1】:

不,Erlang 有single assignment。要使用 example from Armstrong,在 C 中可以这样:

x = 5;
x = x + 10;

但是在 Erlang 中是这样写的:

X = 5;
X1 = X + 10;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-10
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-15
    • 2010-10-28
    • 2014-01-04
    • 1970-01-01
    相关资源
    最近更新 更多