Elixir 拋出

2023-12-16 20:47 更新

在Elixir中,一個(gè)值可以被拋出然后被捕獲.throwcatch是預(yù)留給那些只有它們才能檢索到的值的.

這些情況很少遇到,除了當(dāng)與沒(méi)有提供合適的API的庫(kù)相連接時(shí).例如,想象一下Enum模塊沒(méi)有提供任何API來(lái)找到一個(gè)值,而我們需要從一個(gè)數(shù)字列表中找到第一個(gè)13的倍數(shù):

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?實(shí)際上 提供了合適的API,所以可以使用?Enum.find/2?:

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


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)