繁体   English   中英

是否允许从 handle_call 等 function 访问 `GenServer` 的 defstruct 数据?

[英]Is it allowed to access `GenServer`'s defstruct data from handle_call etc function?

如果在 defstruct 中添加了一些属性, handle_call function 是否可以在没有显式传递参数的情况下访问这些数据?

有像me这样的数据可以访问吗?

Nx项目的stream文件,这里的defstruct有3项(:pid, :input,:output)

在此处输入图像描述

这里的handle_call,是否可以在不显式传递参数的情况下访问上述项目?

在此处输入图像描述

GenServer进程有一个 state,它通过以下调用链传递:

start_link/3init/1 →[ handle_continue/2 ]→ handle_×××/{2,3}terminate/1

这个 state 由虚拟机管理,这就是有状态对象(例如参与者模型中的进程)的存在方式。 以上所有函数的返回值都是进程的新state(嗯,返回的元组的一个元素。)


struct 只是一个结构,它是一个术语,如列表,或原子,或 map(它们确实是下面的映射。) :foo术语和%{foo: :bar}术语和%Baz{foo: :bar}之间没有区别%Baz{foo: :bar}从生命周期的角度来看术语。 在没有人需要它们之后,它们被创建为不可变和垃圾收集。 它们只是术语,大量 static 数据。

是否需要在进程的生命周期中携带一个struct,应该放到进程'state中,就是这样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM