首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

是否有一种简单的方法||在elixir中匹配无模式?

在Elixir中,可以使用_来匹配无模式。_是一个通配符,可以匹配任何值,但不会将该值绑定到任何变量上。这在需要忽略某些值或不关心某些模式时非常有用。

以下是一个示例:

代码语言:elixir
复制
case some_value do
  1 -> IO.puts("匹配到了1")
  _ -> IO.puts("匹配到了其他值")
end

在上面的代码中,如果some_value的值为1,将会匹配第一个模式并输出"匹配到了1";如果some_value的值为任何其他值,将会匹配通配符_并输出"匹配到了其他值"。

关于Elixir中模式匹配的更多信息,可以参考Elixir官方文档

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

(译) Understanding Elixir Macros, Part 3 - Getting into the AST

但在此之前, 我要请你认真考虑一下你代码是否必要基于宏. 尽管宏十分强大, 但也有缺点. 首先, 就像之前我们看到那样, 比起那些普通运行时抽象, 宏代码会很快地变得非常多....然而, shell 会话可以很简单地探索和使用 AST, 我通常就是这样探索 AST 结构....注意我们是如何对输入表达式进行模式匹配, 希望它符合某种结构. 这完全没问题, 因为宏是函数, 这意味着您可以依赖于模式匹配、guards(守卫), 甚至多子句宏....我们例子, 我们依靠模式匹配将比较表达式每一边(被 quoted )带入相应变量....首先, 模式匹配, 硬编码(hard code) :== 被变量 operator 取代了(第 2 行).

13850

(译) Understanding Elixir Macros, Part 4 - Diving Deeper

在前一篇文章, 我向你展示了分析输入 AST 并对其进行处理一些基本方法. 今天我们将研究一些更复杂 AST 转换. 这将重提已经解释过技术....开始之前, 我要再提一次, 你应该仔细考虑你是否真的需要这样结构. 例如 deftraceable 这样宏引入了一个每个代码维护者都需要了解东西. 看着代码, 它背后发生事不是显而易见....所以接下来我们需要: 从 quoted 头中提取函数名和参数 将这些值注入我们宏返回 AST 将函数体注入同一个 AST 打印跟踪信息 我们可以使用模式匹配从这个 AST 片段中提取函数名和参数...然而, 我应该立即指出, 这种实现存在一些问题: 宏不能很好地处理守卫(guards) 模式匹配参数并不总是有效(例如, 当使用 _ 来匹配任何 term 时) 模块中直接动态生成代码时, 宏不起作用...解决方案是检测这种情况, 并以一种特殊方式处理它.

8430

JavaScript模式匹配未来

这里一个超基础函数叫做 greet,它接受一个带有'ID'和'role'用户,并根据用户角色返回问候语。听起来简单吗?...简化复杂性模式匹配艺术 模式匹配可以结束这种复杂性。想象一个你一个 when 子句可以救我们摆脱这种冗长迷宫世界。 简单地说,模式匹配允许我们检查一个输入是否符合一个模式或一个特定类型。...Hello Owner ${input.id}`, _: throw `Invalid role: ${input.role}`, } 在这里,match函数接受输入,when子句检查 input 角色是否匹配指定角色...但是,我希望看到我们最喜欢语言走得更远,尤其是当模式匹配与函数定义结合使用时。这可能会让我们走出舒适区,但一旦你开始探索它,你就会意识到它所拥有的力量和它带来简单性。...希望一天JavaScript能够实现这种基于模式函数重载,相信这将带来一些最好编程体验。就JavaScript未来而言,作者认为模式匹配是最令人兴奋前景之一。

8510

教程 | 如何使用Elixir语言实现深度学习?剖析多层神经网络构建和训练

创建你第一个神经网络是比较简单,在过程你可以看到如何用少量代码来自动完成一项给定任务。 在这篇文章,我们将使用 Elixir 编程语言创建一个标准 3x3 深度学习神经网络。...这种新模式转变是至关重要,以鉴别读者是否计划在技术行业保持相关性。自从 2011 年 Jeopardy 节目上 WATSON 到来,老编程和解决问题方式已经死了。...训练期间,如果神经网络发现与训练目标发生偏离,它需要一种方法来改进。刚才我提到了学习速率常数。这就是改进神经网络要用到。...因为我们需要将每一个计算结果作为一个列表,我们然后打包结果以形成适当形式输出。 我们现在可以计算、神经元输出。但是,完成之前还需要一个步骤。我们需要一种将数据从一层移动到下一层方法。...幸运是,我们可以很容易通过 Elixir 模式匹配做到这一点。 ? 第一个前馈仅接受输入列表,并计算输入层与隐藏层相连接输出。然后将该结果传递到第二个前馈函数。

1.1K130

继续探索with语句

在上一篇博客《漂亮with,鱼与熊掌可以兼得》,展现了with优雅之处,然而在比较with与|>时,言犹未尽,讲得不够透彻。...在那篇博客,我说: 毕竟with/1并不是try/catch,它并不能捕获执行抛出错误,然后转向else进行错误处理。只有当模式匹配出现错误时,才会转向else。...如果进行了这样重构,是否意味着|>也可以将健壮性与优雅结合起来呢?...因为Elixir,函数定义使用了模式匹配,因此,定义参与|>操作函数时,可以通过模式匹配来考虑各种情况,这其中可以包含对{:error, error}情形处理,使得数据流不至于流经该函数时因为错误而崩溃掉...因为with语句同样使用了模式匹配,只要参与方法不能满足模式匹配条件,就不会再执行do,从而规避了错误引起终止: defp results(conn, search_params) do

69970

5 门正在奋力崛起编程语言

无论市场如何变化,实际要求似乎永远能够某些语言、特别是新兴编程语言当中得到满足。今天文章,我们将纵览行业开发新趋势、对五种新兴编程语言做出点评,同时概括其强大功能。...虽然使用范围方面,这几种语言影响力还比较有限,但已经众多企业开始将其引入生产环境,预计未来几年中编程语言市场还将迎来新一轮更迭。我们闲言少叙,马上进入今天新兴语言汇总环节。...利用庞大 JavaScript 生态系统显著降低 Elm 社区重复工作量。 Kotlin ? Kotlin 我们今天榜单位列第二。...Elixir 同样努力为开发人员日常工作带来福音,对这一目标的坚持也让它成功进入我们这份评选榜单。Elixir 直接采用大量来自 Ruby 优秀语法,但同时又能提供 C 语言编码优势。...Elixir 语言设计层面主要强调可扩展性、实用性以及可持续性,其核心特征包括: 监督; 坚持使用数据结构; 剥离效应; 模式匹配共享并发; 热交换代码。

98320

五种拥有光明发展前景新兴编程语言

无论市场如何变化,实际要求似乎永远能够某些语言、特别是新兴编程语言当中得到满足。今天文章,我们将纵览行业开发新趋势、对五种新兴编程语言做出点评,同时概括其强大功能。...虽然使用范围方面,这几种语言影响力还比较有限,但已经众多企业开始将其引入生产环境,预计未来几年中编程语言市场还将迎来新一轮更迭。我们闲言少叙,马上进入今天新兴语言汇总环节。...利用庞大 JavaScript 生态系统显著降低 Elm 社区重复工作量。 Kotlin Kotlin 我们今天榜单位列第二。...Elixir Elixir 同样努力为开发人员日常工作带来福音,对这一目标的坚持也让它成功进入我们这份评选榜单。...Elixir 语言设计层面主要强调可扩展性、实用性以及可持续性,其核心特征包括: 监督; 坚持使用数据结构; 剥离效应; 模式匹配共享并发; 热交换代码。

99210

从 Go 开发者角度看 Elixir 设计思想

我只是把我几个小时调研结果汇总一下,以便能够帮助大家花几分钟读完之后再看 Elixir 是否吸引到了你。...本文内容目录如下: Elixir 是什么 弹性不可变性 模式匹配 原子 Processes 与 Goroutines Supervisors 结构体与协议 管线操作符|> 宏 标准库和 OTP Phoenix...它不局限于 web 开发,还内建了一个可以传输层加入插件一个 socket 库 Phoenix Channels,并且已经 JavaScript, Swift, ObjC, C# 和 Java实现了...最后以 Elixir 作者 José Valim 对它评价作为结语: 「我不会将Elixir定义为更好 Ruby。... Elixir 之前,我本人主要语言确实是 Ruby,但是我创建 Elixir 部分工作/研究本意是想让其获取更多经验,从而丰富其生态系统。

1.1K30

Elixir: 编程语言未来

这篇文章谈一谈最近火爆 Elixir,同时说一下对编程语言选择看法。同时作为 Erlang 发烧友,Elixir 不可不提。即使了那么多编程语言 Elixir 也值得接触。...最好还能 hot-reload 就像很多前端工具一样,只要源码一点变更,不需要刷新页面自动反应在浏览器。Play framework 类似的自动加载功能也可以。...否则你要么需要记住和理解复杂 GC 调优参数、要么像 PHP 那样过一段时间将进程杀掉重来。 元编程和 DSL 扩展性 语法级别的抽象和封装更能提高开发效率。Elixr 如何实现 DSL。...比如,连接到集群,读取状态或者进行一次性数据操作,然后断开。 测试系统 最好有一种比较标准单元测试模型。比如 Java、Node.js、Scala、Elixir 等等。...比如:真正抢占式调度;充分利用多核心并行执行;Actor 模型;监控树;透明分布式; 极其高稳定性;代码热更新部署;函数式编程;模式匹配;等等。并且很多 Erlang 下工具也是可以直接使用。

2.9K40

漂亮with,鱼与熊掌可以兼得

本质上讲,for其实用于collection对值匹配(相当于是flatMap与filter),而with/1则直接匹配值。...例如,对于定义这样两个函数: def ok(x), do: {:ok, x}def error(x), do: {:error, x} for用于函数返回值collection,然后利用模式匹配:ok...,就能起到filter作用: for {:ok, x} <- [ok(1), error(2), ok(3)], do: x #=> [1, 3] with则直接作用在函数上,然后根据模式匹配分别处理正确场景与错误场景...毕竟with/1并不是try/catch,它并不能捕获执行抛出错误,然后转向else进行错误处理。只有当模式匹配出现错误时,才会转向else。...with/1将正常场景与异常场景用一种相对优雅方式分隔开,相较于使用|>,虽然显得还不够直观,但至少保证了代码逻辑结构足够清晰度,干净利落地体现了编码意图,且代码还是足够健壮

86080

超级简单Elixir和ScyllaDB教你创建CRUD CLI,惊人效率提升!

如果您了解用于通信高流量应用程序、需要低延迟和良好容错能力应用程序,您很可能已经遇到过 Elixir(作为一种编程语言)和 ScyllaDB(一种旨在低延迟 NoSQL 数据库)名称。...我不会过多介绍安装细节,因为这会使本文更简单。我们开始安装 Elixir。安装 Elixir一般来说,安装 Elixir 两种主要方法:直接从包管理器安装或使用编程语言版本管理器安装。...elixir -v好吧,现在我们已经安装好了,我们可以通过终端模拟器输入来测试一切是否正常,我们将得到类似于以下内容响应:Erlang/OTP 25 [erts-13.2.2.2] [source...如果您想了解更多信息,请单击此处以更好地了解 Elixir 如何与模式匹配配合使用。命令好吧,现在是期待已久时刻:我们应用程序添加负责执行命令函数!...);我们打印这些值;我们添加了完整列表songs;我们等待用户输入一个条目,说明他想要删除哪个索引,然后我们解析将保存在条目input;我们检查输入索引是否存在于songs;如果你是:我们创建查询

38230

(译) Understanding Elixir Macros, Part 5 - Reshaping the AST

上次我介绍了一个基本版本可追溯宏 deftraceable, 它允许我们编写可跟踪函数. 这个宏最终版本还有一些遗留问题, 今天我们将解决其中一个 — 参数模式匹配....从今天练习应该认识到, 我们必须仔细考虑关于宏可能接收到输入所有假设情况. 问题所在 正如我上次所暗示那样, 当前版本 deftraceable 不能使用模式匹配参数....最后, 推导式末尾, 我们返回一个元组, 该元组由临时名称和 quoted 完整模式组成 - (例如 _ = arg1, 或 0 = arg2)....我们在这个 lambda 里做实际上是一个模式匹配, 我们寻找 {fun_name, context, args}.... quoted 表现形式. 一旦我们遇到匹配模式节点, 我们只需要用新(修饰过)输入参数替换掉旧. 在所有其它情况下, 我们简单地返回输入 AST, 使得树其余部分不变.

11330

Elixir和OTP面向过程编程指南

每种情况下,范式通常具有一种“主要”焦点和技术,这是该族语言驱动力: OO语言中,类或对象作为一种通过操纵该状态(方法)封装状态(数据)方法。...对于具有大量继承性系统尤其如此,它使用抽象接口或没有强大类型。大多数情况下,开发人员记住大量系统结构是有效(什么类什么方法和哪些方式使用)变得很重要。...Elixir / OTP和面向过程编程 Elixir / Erlang和OTP,通信原语是执行语言虚拟机一部分。进程之间和机器之间通信能力建立语言系统中心。...对于一个消耗大量数据系统,通过使用多层流程来减少数据量是一种常见且有用模式。 通过一组独立进程执行计算,我们可以管理这些进程负载,并确保它们稳定性和资源需求。...了这种变化,各国结果并不是简单原始投票结果汇总,而是国家/省份结果汇总。这就改变了从原始状态到状态/省份过程过程分配,从而将状态/省过程结果输入到国家进程

1.4K10

Python 高级教程之结构化模式匹配

声明式方法 读者可能会通过使用 C、Java 或 JavaScript(以及许多其他语言) switch 语句将主题(数据对象)与文字(模式)进行匹配简单示例来了解模式匹配。...switch 语句通常用于将对象/表达式与包含文字 case 语句进行比较。 更强大模式匹配示例可以 Scala 和 Elixir 等语言中找到。...对于结构模式匹配,该方法是“声明性”,并明确说明数据匹配条件(模式)。 虽然使用嵌套“if”语句“命令式”指令系列可用于完成类似于结构模式匹配事情,但它不如“声明式”方法清晰。...简单模式匹配文字 让我们把这个例子看成最简单形式模式匹配:一个值,即主题,被匹配到几个字面量,即模式。在下面的示例,status是 match 语句主题。...你可以使用 | (“ or ”)一个模式组合几个字面值: case 401 | 403 | 404: return "Not allowed" 通配符行为 如果我们修改上面的例子,去掉最后一个

57630
领券