Elixir 抛出

2023-12-16 20:47 更新

在Elixir中,一个值可以被抛出然后被捕获.throwcatch是预留给那些只有它们才能检索到的值的.

这些情况很少遇到,除了当与没有提供合适的API的库相连接时.例如,想象一下Enum模块没有提供任何API来找到一个值,而我们需要从一个数字列表中找到第一个13的倍数:

iex> try do
...>   Enum.each -50..50, fn(x) ->
...>     if rem(x, 13) == 0, do: throw(x)
...>   end
...>   "Got nothing"
...> catch
...>   x -> "Got #{x}"
...> end
"Got -39"

由于​Enum​实际上 提供了合适的API,所以可以使用​Enum.find/2​:

iex> Enum.find -50..50, &(rem(&1, 13) == 0)
-39


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号