net_kernel:connect/1 是否已弃用?
Is net_kernel:connect/1 deprecated?
我从 Erlang Programming(O'Reilly,2009)开始学习 Erlang,并且示例中使用 net_kernel:connect/1
函数来展示如何连接到其他节点。
我试图在 the official documentation 中查找此函数,但甚至没有提到 net_kernel:connect/1
,而且大多数较新的来源(例如,学习一些 Erlang)仅使用 net_kernel:connect_node/1
。
到目前为止,我遇到了几个在文档中被明确标记为已弃用的命令,但总是有关于使用什么的建议。保留 connect/1
只是为了向后兼容吗?
我也 traced back 这两个函数,它们都在某一时刻被翻译成 net_kernel:request({connect, normal, Node})
。
net_kernel:connect/1
函数并未弃用,但对于应用程序,您应该使用 net_kernel:connect_node/1
函数。在 Erlang/OTP 源代码中, net_kernel:connect/1
函数仅由与分布式 Erlang 相关的 Erlang BIF 调用。尽管正如您所观察到的,它和 net_kernel:connect_node/1
最终都会导致对 net_kernel:request/1
的调用,但 net_kernel:connect/1
函数首先执行与分布式 Erlang 相关的检查。
我从 Erlang Programming(O'Reilly,2009)开始学习 Erlang,并且示例中使用 net_kernel:connect/1
函数来展示如何连接到其他节点。
我试图在 the official documentation 中查找此函数,但甚至没有提到 net_kernel:connect/1
,而且大多数较新的来源(例如,学习一些 Erlang)仅使用 net_kernel:connect_node/1
。
到目前为止,我遇到了几个在文档中被明确标记为已弃用的命令,但总是有关于使用什么的建议。保留 connect/1
只是为了向后兼容吗?
我也 traced back 这两个函数,它们都在某一时刻被翻译成 net_kernel:request({connect, normal, Node})
。
net_kernel:connect/1
函数并未弃用,但对于应用程序,您应该使用 net_kernel:connect_node/1
函数。在 Erlang/OTP 源代码中, net_kernel:connect/1
函数仅由与分布式 Erlang 相关的 Erlang BIF 调用。尽管正如您所观察到的,它和 net_kernel:connect_node/1
最终都会导致对 net_kernel:request/1
的调用,但 net_kernel:connect/1
函数首先执行与分布式 Erlang 相关的检查。