2009-02-11 74 views
9

我看到這個代碼在二郎:二郎,列表中理解語法

[X-$0 || X<-someFun()] 

在該行我發現-$0語法非常有用的。

我閱讀了代碼,並估計它的含義,但我不太確定:它是否分割所有數字?

我想看看該語法的解釋或手冊頁,但我找不到它。任何人都可以給我看正確的頁面嗎?

回答

17

什麼代碼正在做的是採取從someFun()輸出(這需要返回一個列表),並在列表中的每個元素被分配元素的值的變量X,然後減去字符的ASCII值0從該值。結果列表就是整個表達式的值。

它在做什麼,在實踐中(我自己寫了幾十次這樣的代碼),假設someFun/0是一個函數,它返回一個只包含數字的字符串,然後將該字符串轉換爲數字。因此,如果someFun()返回「12345」,則此列表理解的結果爲[1, 2, 3, 4, 5]

如果您熟悉map函數的概念(如MapReduce),那麼到目前爲止聽起來應該聽起來很熟悉。

此維基頁面看起來像一個很好的介紹,二郎列表理解:

http://en.wikibooks.org/wiki/Erlang_Programming/List_Comprehensions

喬·阿姆斯特朗的書「編程二郎」,從語用書架,(http://pragprog.com/titles/jaerlang/programming-erlang)還包括列表解析非常好(沿與其他一切Erlang相關)。優秀的書,強烈推薦等