2011-11-12 33 views
0

在Erlang shell中,我可以很好地重用我的變量。像這樣:在Erlang代碼中重新使用我的變量,而不是Erlang Shell

 
1> R = "muzaaya". 
"muzaaya" 
2> f(R). 
ok 
3> R = "muzaaya2". 
"muzaaya2" 
所以,我不能在我的源代碼中調用 f(Variable),因爲我不知道這個函數屬於哪個模塊。我已經嘗試過如下模塊: erlangshellc,e.t.c.有沒有人嘗試在Erlang源代碼中重新使用變量,而不僅僅是在Shell中?你是怎麼做到的 ?謝謝

回答

3

解釋REPL shell,編譯代碼文件。 shell可以方便地測試,但是你不會將你的web服務器寫入shell。 ;-)

對於Erlang黑客來說,實現f(V)語言結構是可能的,但這並不符合Erlang設計模型。 注意,沒有函數可以完成對變量的遺忘,所以它必須以新的本地語言結構完成。 編譯後,虛擬機不再知道變量,因爲Erlang是由一個相當普通的堆棧機器運行的,與JVM沒有多大區別。

它只是不會是函數式編程,如果能重新綁定變量V.

4

不,你不能在模塊內部做到這一點。

2

鍵入help()時列出的功能。在shell中只有shell功能,在編程Erlang時不能使用。 f()是其中的一個函數。

2

正如其他人已經指出f()是一個shell命令只有在有外殼的情況。 f()和所有其他shell命令看起來像一個普通的函數調用,因爲在Erlang中執行某些操作的唯一方法是調用一個函數。而且shell並沒有引入任何新的語法。所有的shell命令都像正常的函數一樣,它們總是返回一個值。

雖然有很多人不同意並且發現一次只綁定變量不必要的限制,但認爲不需要在正常函數中使用f()。