gpt4 book ai didi

elixir - 如果 params 不为零,则执行惯用的 Elixir ?

转载 作者:行者123 更新时间:2023-12-04 02:07:05 24 4
gpt4 key购买 nike

如何在继续处理参数之前过滤掉无效参数,如 nil 或空列表?
case下面的使用似乎很常见,但代码并不清晰——我很确定有一种更简单、更惯用的方法来做到这一点。

 def load(token) do

case token do
nil -> nil
[] -> nil
token -> process(token)
end

end

最佳答案

如果一个函数有多个子句,Elixir 将尝试每个子句,直到找到一个匹配的子句。这允许您根据提供的参数“过滤” - 如果函数不共享公共(public)逻辑,则特别有用。

def load([]), do: IO.puts("empty")
def load(token) when token == nil, do: IO.puts("nil") # Matching `nil' is OK too.
def load(token), do: process(token)

第二个子句说明了允许更一般匹配的守卫的使用,有 a number of predicates that are valid as guards所有这些都可以附加到(几乎)任何用于以递归或其他方式切换函数参数的表达式。

这个约定适用于所有现有的 BEAM 语言,在阅读 OTP 文档时要牢记在心。

关于elixir - 如果 params 不为零,则执行惯用的 Elixir ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37781229/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com