使用Elixir的“ with”有什么好处

路易斯·苏亚雷斯

我在Elixir学校看到了这段代码

with {:ok, user} <- Repo.insert(changeset),
     {:ok, token, full_claims} <- Guardian.encode_and_sign(user, :token, claims) do
  important_stuff(token, full_claims)
end

我没有简单的区别:

{:ok, user} <- Repo.insert(changeset),
{:ok, token, full_claims} <- Guardian.encode_and_sign(user, :token, claims)
important_stuff(token, full_claims)
阿列克谢·马蒂什金(Alexei Matiushkin)

{:ok, user} <- Repo.insert(changeset)没有,首先with会提高(CompileError) undefined function <-/2你可能是说{:ok, user} = Repo.insert(changeset)

Kernel.SpecialForms.with/1某种程度上扮演Either monad的角色

如果RHOLHO匹配,则转到下一个子句。否则,它将立即提早返回不匹配的RHO,并丢弃所有其他子句。如果上一个成功,则考虑应按顺序应用的几个功能。遵循这些原则。

with {:ok, text} <- File.read(name),
     {:ok, words} <- MyStemmer.get_words(text),
     count when in_integer(count) <- Enum.count(words),
  do: IO.puts("File contained #{count}" words)

如果没有这样的文件,则将返回整个代码段,{:error, :enoent}因为第一个子句将无法对LHO进行模式匹配

{:ok, text} = File.read(name)如果MatchError没有这样的文件,它将提高


三年前写了一篇有关该主题博客文章,可能仍然值得一读。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用UITableViewController有什么好处?

来自分类Dev

使用compose有什么好处?

来自分类Dev

使用ObjectSet有什么好处

来自分类Dev

使用arrayWithCapacity有什么好处

来自分类Dev

使用Cordova有什么好处?

来自分类Dev

在解析JSON时使用NSDictionary有什么好处或好处?

来自分类Dev

使用QueudSynchronizer实现CountLatch有什么好处?

来自分类Dev

使用Integer时IntegerCache有什么好处?

来自分类Dev

使用设计文档有什么好处?

来自分类Dev

使用结果有什么好处?

来自分类Dev

在Android中使用BroadcastReceiver有什么好处?

来自分类Dev

使用--grep-reflog有什么好处?

来自分类Dev

使用Gunicorn + Nginx + Flask有什么好处?

来自分类Dev

使用Spring PropertySource有什么好处?

来自分类Dev

在DRF中使用HyperlinkedModelSerializer有什么好处?

来自分类Dev

在python中使用*或**有什么好处吗?

来自分类Dev

在Erlang中使用RabbitMQ有什么好处?

来自分类Dev

使用关键字“ this”有什么好处?

来自分类Dev

使用Sharpsign Dot有什么好处?

来自分类Dev

(Python)使用静态方法有什么好处?

来自分类Dev

使用邮件分发服务有什么好处?

来自分类Dev

通过DVI使用HDMI有什么好处?

来自分类Dev

使用相同的内存模块有什么好处?

来自分类Dev

使用结果有什么好处?

来自分类Dev

使用CDH(cloudera)有什么好处?

来自分类Dev

使用#define声明常量有什么好处?

来自分类Dev

使用这种SQL样式有什么好处?

来自分类Dev

在Redux中,使用actionCreators有什么好处?

来自分类Dev

在Erlang中使用RabbitMQ有什么好处?