Erlang中fun erlang:'+'/2的+运算符含义及等价Elixir用法疑问
问题解答
- 关于
fun erlang:'+'/2的含义
- 你的理解完全正确,
'+'就是加法运算符对应的原子,因为+不属于Erlang原子允许的默认字符范围,所以需要用单引号包裹。/2表示这是一个接收2个参数的函数,这个函数引用的作用就是对传入的两个参数做加法运算,本质就是一个基础求和函数,你没有想复杂。 - 你可以在Erlang shell里直接验证它的效果:
1> Add = fun erlang:'+'/2. #Fun<erlang.+.2> 2> Add(2, 3). 5
- 关于ra项目中这个状态机的作用
- 你对这个三元组结构的判断也符合ra的设计:
{simple, 处理函数, 初始状态}是ra提供的极简状态机模板,处理函数的入参固定为「当前状态值 + 新输入的操作数据」,返回值就是更新后的状态值。 - 这里用加法函数、初始值0的状态机,效果就是持续累加所有输入的数值,最终状态值就是所有输入的总和。
- 和Elixir语法的对应关系
- 这个Erlang写法和Elixir的
&:erlang.+/2完全等价,二者指向的是同一个函数,你可以在Elixir的iex中验证:iex> add = &:erlang.+/2 &:erlang.+/2 iex> add.(2, 3) 5
两种写法只是Erlang和Elixir不同的函数捕获语法差异,底层调用的是同一个Erlang标准库函数。
内容的提问来源于stack exchange,提问作者DogEatDog
相关产品推荐
相关产品推荐

