【发布时间】:2018-12-19 23:43:36
【问题描述】:
我很难理解下面的代码 sn-p:
Comeonin.Argon2.add_hash("hello123") |> Comeonin.Argon2.check_pass("hello123")
哪个输出:
{:ok,
%{
password: nil,
password_hash: "$argon2i$v=19$m=65536,t=6,p=1$thCv1TGdiLszGx+bRugcqQ$EH8PpUqpCGTevihslOdSRPWS6+UlQJwv2pMOvwBJUS4"
}}
我想在这里了解两件事:
使用 |> 时传递给第二个函数的参数的顺序,它总是作为第一个参数传递给函数吗? 如果需要将其作为第二个参数传递给函数怎么办?
如何进行模式匹配和解构返回值
所以运行第一个函数我看到了这个:
Comeonin.Argon2.add_hash("hello123")
%{
password: nil,
password_hash: "$argon2i$v=19$m=65536,t=6,p=1$GCmClx6W8PyzKjvh3UcKYQ$d3IMfhiEULCmMBuMF7eyBYgkPrXCBQdqQNOJNGr/3qI"
}
所以它正在返回一张地图。 我该如何进行模式匹配?
为什么这不起作用?
{a, b} = Comeonin.Argon2.add_hash("hello123")
或者如果我想忽略第一个键:
{_, b} = Comeonin.Argon2.add_hash("hello123")
对于模式匹配我试过这个:
case Comeonin.Argon2.add_hash("hello123") do
{password, password_hash} -> ...
end
但是我想一旦我理解了如何解构模式匹配会是一样的吗?
【问题讨论】:
-
NB 您正在混淆元组
{...}和映射%{...}。后者是键值。
标签: elixir