gpt4 book ai didi

erlang - 如何在 Map 具有带有传入值的键的函数中进行模式匹配?

转载 作者:行者123 更新时间:2023-12-03 21:34:24 26 4
gpt4 key购买 nike

所以我正在创建一个 IRC 服务器,并且我有一个从 map 中删除用户的函数。这个想法是使用模式匹配,因此如果用户在 map 中,则调用一个函数的一个版本,否则调用另一个函数。

我的第一个想法是执行以下操作:

remove_user_from_channel(User, Channel=#channel_details{users = UserMap=#{User := _}}) ->
Channel#channel_details{users = maps:remove(User, UserMap)}.

但是,编译失败,并出现错误variable 'User' is unbound

有什么方法可以通过函数级模式匹配来实现这一点吗?

最佳答案

您无法在函数头中对映射键进行模式匹配,但可以在 case 中进行:

remove_user_from_channel(User, Map) ->
case Map of
Channel = #channel_details{users = UserMap = #{User := _}} ->
Channel#channel_details{users = maps:remove(User, UserMap)};
_ ->
other
end.

关于erlang - 如何在 Map 具有带有传入值的键的函数中进行模式匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36416053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com