我试图在一个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
方法:
Enum.each(users, fn(user) ->
user.token = Comeonin.Bcrypt.hashpwsalt(to_string(user.id))
end)发布于 2016-02-28 16:14:16
这里有几个问题。=运算符是匹配运算符,它不是赋值。为了解释错误,在语法上,这看起来像函数调用的左侧匹配,这是不允许的。
但这不是你实际目标的重点。如果希望使用新的bcrypt信息更新一组用户模型,则需要使用map函数:
users = Enum.map(users, fn %User{id: id}=user ->
%User{user| token: Comeonin.Bcrypt.hashpwsalt("#{id}")}
end)你必须记住,灵丹妙药中的一切都是不可变的。
https://stackoverflow.com/questions/35682499
复制相似问题