gpt4 book ai didi

elixir - 可变 Arity Elixir 函数的最佳实践?

转载 作者:行者123 更新时间:2023-12-04 13:57:13 25 4
gpt4 key购买 nike

在 Elixir 中处理可变数量而不导致不必要的复杂性和案例匹配的最佳实践是什么?

Python 示例:

def function_with_optional_param(param1, param2, param3=None):
if not param3:
param3 = "Whatever"

return

在 Elixir 中如何最好地处理 param3?

最佳答案

这是 Elixir 中非常常见的模式。最后一个参数应该是一个列表(具体的关键字列表),默认值为 [] .在 Elixir 中,如果最后一个参数是关键字列表,则无需添加 []围绕列表。例如:

def do_lots(arg1, arg2, opts \\ []) do
one = opts[:one] || :default
two = opts[:two] # default to nil if it's not passed
# do something with arg1, arg2, one, and two
end

def my_func do
arg1
|> do_lots(2)
|> do_lots(49, one: :question)
|> do_lots(99, two: :agent)
|> do_lots(-1, one: 3, two: 4)
end

处理可变大小参数的另一个选项是将它们全部作为列表传递。这使得函数 arity 1 并且您可以根据需要处理它们。

最后,您可以将部分或全部参数作为映射传递。这样做的好处是允许您在映射上进行模式匹配并根据映射中传递的键创建多个函数子句。

请记住,您不能轻松地在关键字列表上进行模式匹配,因为它们取决于顺序。

关于elixir - 可变 Arity Elixir 函数的最佳实践?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43490222/

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