在Erlang shell中,我可以很好地重用我的变量。像这样:
1> R = "muzaaya". "muzaaya" 2> f(R). ok 3> R = "muzaaya2". "muzaaya2"所以,我不能在源代码中调用
f(Variable)
,因为我不知道这个函数属于哪个模块。我尝试了以下模块:erlang
,shell
,c
,e.t.c。有没有人尝试在Erlang源代码中重用变量,而不仅仅是在Shell中?你是怎么做到的 ?感谢
答案 0 :(得分:4)
不,你不能在模块中做到这一点。
答案 1 :(得分:3)
解释REPL shell,编译代码文件。 shell可以很方便地测试,但是你不会在shell中编写你的web服务器。 ; - )
Erlang黑客实现f(V)
语言构造是可能的,甚至是困难的,但它不适合Erlang设计模型。
记住,没有功能可以完成对变量的遗忘,因此必须在新的本地语言结构中完成。
编译时,虚拟机不再知道变量,因为Erlang是由一个相当普通的堆栈机器运行的,与JVM没什么不同。
如果可以重新绑定变量V,那就不是函数式编程。
答案 2 :(得分:2)
键入help()时列出的函数。 shell中只有shell函数,在编写Erlang时无法使用。 f()是其中一个函数。
答案 3 :(得分:2)
正如其他人已经指出的那样,f()是一个shell命令,只存在于shell中。 f()和所有其他shell命令看起来像普通函数调用是因为在Erlang中执行某些操作的唯一方法是调用函数。 shell没有引入任何新语法。所有shell命令都像普通函数一样,因为它们总是返回一个值。
在正常的函数中,没有必要能够使用f(),尽管有许多人不同意并且发现一次只对变量进行不必要限制的绑定。