erlang - 如何获取erlang集群中的当前节点名称?

我在名为“message_passing”的模块中有一个名为“message/2”的函数,该函数在另一个函数 hash/1 中被调用。我需要 3 个名为 node1、node2 和 node3 的节点,但是当我想在名为“Current_Node”的变量中获取当前节点时,它不起作用。它显示错误。它无法在我的变量中获取当前节点。

** exception error: no true branch found when evaluating an if expression
     in function  message_passing:hash/1

hash(H)->
  Current_Node=node(),
   if
    Current_Node==node1->
     message(node2,H),
     message(node3,H);
    Current_Node==node2->
     message(node1,H),
     message(node3,H);
    Current_Node==node3->
     message(node1,H),
     message(node2,H)
   end

最佳答案

不确定您是否只是在代码中使用示例,但是 bif node() 不会返回仅包含节点名称的原子,还会返回主机名。

node() = node1@localhost.

这就是您的代码无法按您认为的那样工作的原因。

https://stackoverflow.com/questions/1672322/

相关文章:

perl - 我如何检查一个值是否在 Perl 的列表中?

xml - 对齐 ="right"在 XML 中不起作用

oracle - 如何使用 pl/sql 循环接受用户输入?

sql-server - UPDATE 表中除 TOP 1 记录外的记录

css - 如何使用 Notepad++ 将 css long 转换为 css one line s

sql-server - 在数据库中存储 & 符号

vba - VBA 中的 "Dim fso, MyFile, FileName, TextLine"

.net - 在运行时替换 .NET 类型

oracle - 关闭 Oracle 中的索引

php - eval {php} 条件