我试图通过在签名中使用不同的地图来重载connect
模块上的UserSocket
方法,但是,它没有工作,并且服务器将无法连接使用的地图是..这是我试图做的事情:
def connect(%{"token" => sent_token }, socket), do: connect(%{"token" => sent_token, "owner_id" => 1 }, socket)
def connect %{"token" => sent_token, "owner_id" => pased_owner_id }, socket do
有什么想法吗?
答案 0 :(得分:0)
Elixir执行与模式匹配的第一个函数定义,并忽略具有除模式中指定的键之外的键的Map。如果您将带有DECLARE
的子句放在另一个子句之前,您应该得到您想要的行为:
END;
演示:
"owner_id"