Elixir 抛出
2023-12-16 20:47 更新
在Elixir中,一个值可以被抛出然后被捕获.throw
和catch
是预留给那些只有它们才能检索到的值的.
这些情况很少遇到,除了当与没有提供合适的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
以上内容是否对您有帮助:
更多建议: