Elixir 变量域
2023-12-16 20:47 更新
要牢记
try/catch/rescue/after
块中的变量定义不会泄露到外部内容中.这是因为try
块可能会失败,因此这些变量可能永远不会被绑定在第一位.换句话说,这个代码是非法的:ex> try do
...> raise "fail"
...> what_happened = :did_not_raise
...> rescue
...> _ -> what_happened = :rescued
...> end
iex> what_happened
** (RuntimeError) undefined function: what_happened/0
作为替代,你可以存储try
表达式的值:
iex> what_happened =
...> try do
...> raise "fail"
...> :did_not_raise
...> rescue
...> _ -> :rescued
...> end
iex> what_happened
:rescued
对try
,catch
和rescue
的介绍到此结束.你会发现相较于其他语言,在Elixir中较少用到它们,尽管在某些库或特定的代码没有"按照规则"书写时,它们很有用.
以上内容是否对您有帮助:
更多建议: