我试图在for-each循环中设置User模型的一些属性,但是我一直在跟踪错误
无法调用远程函数x.token/0匹配 (elixir)src/elixir_fn.erl:9:匿名fn/3 in:elixir_fn.translate/3(stdlib)lists.erl:1353 :: lists.mapfoldl/3(elixir) )src/elixir_fn.erl:14 :: elixir_fn.translate/3
方法:
Enum.each(users, fn(user) ->
user.token = Comeonin.Bcrypt.hashpwsalt(to_string(user.id))
end)
Run Code Online (Sandbox Code Playgroud)
aso*_*nge 15
这里有一些问题.该=操作是匹配运营商,它不是分配.为了解释错误,语法方面,这看起来像匹配的左侧的函数调用,这是不允许的.
但这是你的实际目标的重点.如果您想要使用新的bcrypt信息更新一组用户模型,则需要使用map函数:
users = Enum.map(users, fn %User{id: id}=user ->
%User{user| token: Comeonin.Bcrypt.hashpwsalt("#{id}")}
end)
Run Code Online (Sandbox Code Playgroud)
你必须记住Elixir中的所有东西都是不可变的.
| 归档时间: |
|
| 查看次数: |
7903 次 |
| 最近记录: |