pattern-matching - 如何在 elixir 函数中使用匹配的参数

标签 pattern-matching elixir

假设我有两个函数用例。对有订阅的用户做一些事情,对没有订阅的用户做一些事情。

def add_subscription(subscription_id, %User{subscription: nil})
  # Do something with user here.


def add_subscription(subscription_id, user)

我如何进行这样的模式匹配并且仍然在第一个函数中使用用户?

谢谢!

最佳答案

您可以将函数参数绑定(bind)到变量:

def add_subscription(subscription_id, %User{subscription: nil} = user)

约定是在模式匹配之后分配:
# Do This
def foo(%User{subscription: nil} = user)

# Instead of this
def foo(user = %User{subscription: nil})

关于pattern-matching - 如何在 elixir 函数中使用匹配的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36184062/

相关文章:

scala - 带括号和不带模式匹配的单例对象的区别?

regex - 在纸张输入十进制数时使用什么模式?

java - 如何替换: [text](link) with <a href ="link">text</a> in java?

erlang - Elixir:通过某些操作重新启动 GenServer

testing - 检查模式模式匹配是否成功或失败

MySQL MATCH AGAINST 不工作

pattern-matching - 如何将哈希表与局部变量的值进行匹配?

elixir - 如何在 Phoenix 应用程序启动时预填充数据库?

elixir - Phoenix 中如何创建 View 属性?

elixir - 有根 Elixir 模块吗?