gen_server:start/4 中“Function”的类型签名是什么?
what is the type signature of `Func` in gen_server:start/4?
OTP 文档说 gen_server:start/4
的签名是这样的:
start_link(ServerName, Module, Args, Options) -> Result
ServerName = {local,Name} | {global,GlobalName}
| {via,Module,ViaName}
Name = atom()
GlobalName = ViaName = term()
Module = atom()
Args = term()
Options = [Option]
Option = {debug,Dbgs} | {timeout,Time} | {hibernate_after,HibernateAfterTimeout} | {spawn_opt,SOpts}
Dbgs = [Dbg]
Dbg = trace | log | statistics | {log_to_file,FileName} | {install,{Func,FuncState}}
SOpts = [term()]
Result = {ok,Pid} | ignore | {error,Error}
Pid = pid()
Error = {already_started,Pid} | term()
https://erlang.org/doc/man/gen_server.html#start_link-4
什么是Func
?文档只是说:
This function is useful when a more complex initialization procedure is needed than the gen_server process behavior provides.
所以现在我知道它很有用了。但是它需要多少参数呢?属于什么类型?
感谢您的帮助。
该规范中的 Func
是 debug
的选项,因此与该文档关系不大。
您引用的文档指的是 gen_server:enter_loop
函数,而不是 Func
.
关于您的问题,Func
由 sys
模块处理,如 sys:install/2, and has the following spec:
dbg_fun() =
fun((FuncState :: term(),
Event :: system_event(),
ProcState :: term()) ->
done | (NewFuncState :: term()))
如果我关注最新母版上的源代码,gen_server 的文件没有提及任何 debug
选项中的 install
。
所以我猜
- 代码已更改,文档不是最新的
- 代码和文档已更改但未部署最新文档
从历史上看,这可能就是“@Jose M”所指的。
OTP 文档说 gen_server:start/4
的签名是这样的:
start_link(ServerName, Module, Args, Options) -> Result
ServerName = {local,Name} | {global,GlobalName}
| {via,Module,ViaName}
Name = atom()
GlobalName = ViaName = term()
Module = atom()
Args = term()
Options = [Option]
Option = {debug,Dbgs} | {timeout,Time} | {hibernate_after,HibernateAfterTimeout} | {spawn_opt,SOpts}
Dbgs = [Dbg]
Dbg = trace | log | statistics | {log_to_file,FileName} | {install,{Func,FuncState}}
SOpts = [term()]
Result = {ok,Pid} | ignore | {error,Error}
Pid = pid()
Error = {already_started,Pid} | term()
https://erlang.org/doc/man/gen_server.html#start_link-4
什么是Func
?文档只是说:
This function is useful when a more complex initialization procedure is needed than the gen_server process behavior provides.
所以现在我知道它很有用了。但是它需要多少参数呢?属于什么类型?
感谢您的帮助。
该规范中的 Func
是 debug
的选项,因此与该文档关系不大。
您引用的文档指的是 gen_server:enter_loop
函数,而不是 Func
.
关于您的问题,Func
由 sys
模块处理,如 sys:install/2, and has the following spec:
dbg_fun() =
fun((FuncState :: term(),
Event :: system_event(),
ProcState :: term()) ->
done | (NewFuncState :: term()))
如果我关注最新母版上的源代码,gen_server 的文件没有提及任何 debug
选项中的 install
。
所以我猜
- 代码已更改,文档不是最新的
- 代码和文档已更改但未部署最新文档
从历史上看,这可能就是“@Jose M”所指的。