[英]How do I synchronize RabbitMQ .erlang.cookie with a batch file?
[英]In erlang, how do I interpret the `+` operator in `fun erlang:'+'/2`
我是Elixir
的新手,但對Erlang
有一些經驗。 As I've been trying to learn Erlang while experimenting with the RabbitMQ implementation of RAFT, ra , I've come across a line in erlang Machine = {simple, fun erlang:'+'/2, 0},
Machine = {simple, fun erlang:'+'/2, 0},
所以,在{simple, fun erlang:'+'/2, 0},
,這看起來像是在創建一個元組。 元組中的第一項是一個名為simple
的atom
,接下來function
和最后一個integer
:
{atom, function, integer}
我不明白 function fun erlang:'+'/2
在這種情況下做了什么。 /2
表示它應該需要 2 個參數。 '+'
只是一個加法運算符嗎? 如果是這樣,這是一個簡單的sum
function 我想多了? erlang 文檔說“如果原子不是以小寫字母開頭或包含除字母數字字符、下划線 (_) 或 @ 之外的其他字符,則原子將用單引號 (') 括起來。”
在我看到此代碼的給定上下文中,它說明State machine that implements the logic
,這使我理解這台 state 機器以原子simple
命名,執行加法,並將結果保存在最后一項元組。
是否相當於在 elixir 中執行&:erlang.+/2
? 文檔參考
任何上下文都會有幫助。
你完全正確 - 這個 function 只是加法運算符,它用單引號括起來,因為它不是以小寫字母開頭。 fun erlang:'+'/2
相當於 Elixir 的&:erlang.+/2
。
您可以使用 function 語法而不是運算符語法來調用它:
> erlang:'+'(1,2).
3
您可以將其用作高階 function:
> lists:foldl(fun erlang:'+'/2, 0, [1, 2, 3]).
6
(當然,您通常會使用lists:sum/1
而不是后一個示例。)
根據 Erlang 文檔,此特定用法是 forms 之一,用於指定Fun expression ,而這個是fun Module:Name/Arity
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.