2016-06-30 84 views
2

我在O'Reilly
書中的「軟件開發的並行方法」一書中閱讀,並且在第93頁有一些「消息傳遞」的例子。消息傳遞變量和「直接」erlang

1> Pid = self(). 
<0.30.0> 
2> Pid ! hello. 
hello 
3> <0.30.0> ! hello. 
* 1: syntax error before: '<' 

的問題是,我不明白爲什麼有一個語法錯誤,因爲當我輸入1> Pid. 我得到的結果<0.30.0>,所以有什麼我們做線2,和3號線之間的差值(期望它是一個變量的事實)?

+0

[發送消息的Pid二郎山可能的複製](http://stackoverflow.com/questions/14169931/sending-message-pid-erlang) –

+0

我看到這個問題,但我不問如何發送消息,我問爲什麼我不能發送它在兩種方式 –

+0

看看在這個問題上的[第三個答案](http://stackoverflow.com/a/14170100/409228)。 –

回答

5

沒有爲在二郎山字面進程ID沒有語法。原因在於它幾乎沒有任何意義:每次運行程序時,您想要達到的進程最有可能具有不同的pid。

通常您會產生一個進程,將返回值spawn保存在變量中,然後使用該變量與進程交互。

如果你真的想從它的字符串表示可用的PID,你可以使用函數list_to_pid,或pid獲得從印刷組件的PID:

list_to_pid("<0.30.0>") 
pid(0,30,0) 
+3

關於你的最後一句話,我還會加上可能使用'pid(0,30,0)'的例子。 –

+0

@ A.Sarid好點!添加。 – legoscia