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以上内容是否对您有帮助:

免费 AI IDE


更多建议: