【问题标题】:Re-using my variables in Erlang Code, not Erlang Shell在 Erlang 代码中重用我的变量,而不是 Erlang Shell
【发布时间】:2011-11-12 15:41:02
【问题描述】:

在 Erlang shell 中,我可以很好地重用我的变量。像这样:

1> R =“muzaaya”。 “穆扎亚” 2> f(R)。 好的 3> R =“muzaaya2”。 “muzaaya2” 所以,我不能在我的源代码中调用f(Variable),因为我不知道这个函数属于哪个模块。我尝试过类似的模块:erlang,shell,c, 等等。有没有人尝试在 Erlang 源代码中重用变量,而不仅仅是在 Shell 中?你是怎么做到的 ?谢谢

【问题讨论】:

    标签: erlang


    【解决方案1】:

    不,您不能在模块内执行此操作。

    【讨论】:

      【解决方案2】:

      REPL shell 被解释,代码文件被编译。 shell 可以方便地进行测试,但您不会在 shell 中编写 Web 服务器。 ;-)

      对于 Erlang 黑客来说,实现 f(V) 语言结构是可能的,甚至不难,但它不适合 Erlang 设计模型。 请注意,没有任何函数可以完成变量的遗忘,因此必须使用新的本地语言结构来完成。 编译后,虚拟机不再知道变量,因为 Erlang 是由一个相当普通的堆栈机运行的,与 JVM 没有太大区别。

      如果可以重新绑定变量 V,那就不是函数式编程了。

      【讨论】:

        【解决方案3】:

        键入 help() 时列出的函数。在 shell 中是 shell 唯一的函数,在编程 Erlang 时不能使用。 f() 是其中一种功能。

        【讨论】:

          【解决方案4】:

          正如其他人已经指出的那样, f() 是一个 shell 命令,只存在于 shell 中。 f() 和所有其他 shell 命令看起来像一个普通的函数调用,因为在 Erlang 中做某事的唯一方法是调用一个函数。而且 shell 没有引入任何新的语法。所有 shell 命令的行为都与普通函数一样,因为它们总是返回一个值。

          认为没有必要在普通函数中使用 f(),尽管有许多人不同意并认为变量的唯一绑定具有不必要的限制。

          【讨论】:

            猜你喜欢
            • 2015-03-09
            • 2014-02-10
            • 1970-01-01
            • 2012-12-14
            • 2019-12-10
            • 1970-01-01
            • 1970-01-01
            • 2011-03-30
            相关资源
            最近更新 更多