首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在匹配中调用远程函数: Foreach循环

无法在匹配中调用远程函数: Foreach循环
EN

Stack Overflow用户
提问于 2016-02-28 12:25:19
回答 1查看 14K关注 0票数 10

我试图在一个for-each循环中设置一些用户模型的属性,但是我一直收到以下错误

无法在匹配(长生不老药) src/elixir_fn.erl:9:匿名fn/3内调用远程函数x.token/0,in :elixir_fn.Transform/3 (stdlib) lists.erl:1353::lists.mapfoldl/3 (长生不老药) src/elixir_fn.erl:14::elixir_fn.Transform/3

方法:

代码语言:javascript
复制
Enum.each(users, fn(user) ->
  user.token = Comeonin.Bcrypt.hashpwsalt(to_string(user.id))
end)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-28 16:14:16

这里有几个问题。=运算符是匹配运算符,它不是赋值。为了解释错误,在语法上,这看起来像函数调用的左侧匹配,这是不允许的。

但这不是你实际目标的重点。如果希望使用新的bcrypt信息更新一组用户模型,则需要使用map函数:

代码语言:javascript
复制
users = Enum.map(users, fn %User{id: id}=user ->
          %User{user| token: Comeonin.Bcrypt.hashpwsalt("#{id}")}
        end)

你必须记住,灵丹妙药中的一切都是不可变的。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35682499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档