`
argan
  • 浏览: 129573 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

erlang 中带下划线变量的使用

阅读更多

在erlang里'_'是一个特殊的变量(其实erlang里不应该叫“变”量,照顾习惯,姑且这么叫吧),它可以代替任何东西,在match的时候非常有用,例如:

{A, _, [B|_], {B}} = {abc, 23, [22, 23], {22}}

 这样,就是把_当作一个占位符,表示,match的时候这里有一个值,但是我不关心他是什么

 

在erlang里,使用下划线'_'开头的变量名是有特殊含义的,除了当作普通的变量使用(binding,match,compute,compare,etc)以外,还是一个特殊的标记,告诉编译器,这些变量是被忽略的,声明了没有使用/绑定也没关系(否则,默认情况下编译会报警的)

 

在使用下划线开头的变量来标记可以忽略的变量是一个不错的主义,比如:

{Name,_Age}={"Argan",30}

 这里的_Age其实是我不关心的,因此使用一个_开头的变量来做match,在阅读代码的时候,虽然其他的代码里不会用到_Age,但是一下就能看出来,这个数据结构,除了Name以外,还有一个值是Age,非常明确的表达

 

不过,因为单一个'_'可以match任意的值,而且match出来的值是无法使用的,因此在表达式里多次使用是没关系的,例如第一个例子,但是,如果第一个例子修改成:

{A, _int, [B|_int], {B}} = {abc, 23, [22, 23], {22}}

 就会出错了,本意是想表达的更清楚,_int的地方是一个int值,但是这里有一个陷阱,[Head|Tail]这样的match,出来的结果的Tail是一个list,因此,上述表达式里第一个_int的地方是一个int 23,第二个_int的地方实际上是一个list [23],因此上述表达式match会失败。

 

留此记录。

3
0
分享到:
评论
1 楼 GuolinLee 2014-08-01  
{A, _int, [B|_int], {B}} = {abc, 23, [22, 23], {22}}这里的
_int改成_Int就可以匹配了,我也不知道为什么

相关推荐

    在erlang项目中使用protobuf例子

    标题中的“在erlang项目中使用protobuf例子”指的是在Erlang编程环境中使用Protocol Buffers(protobuf)这一数据序列化工具。protobuf是由Google开发的一种高效、跨语言的数据表示和序列化格式,它允许开发者定义...

    erlang中文基础教程

    在 Erlang 中,用户可以使用模块和函数来实现复杂的计算任务。例如,用户可以创建一个模块,定义一个函数来实现某个计算任务,然后在 Erlang Shell 中调用该函数来实现任务。 4. 编译和运行 在 Erlang 中,用户...

    Erlang并发编程,Erlang程序设计,Erlang中文手册

    使用Erlang编写出的应用运行时通常由成千上万个轻量级进程组成,并通过消息传递相互通讯。进程间上下文切换对于Erlang来说仅仅 只是一两个环节,比起C程序的线程切换要高效得多得多了。 使用Erlang来编写分布式应用...

    Erlang v21.2 Windows 64位 最新安装版(附安装教程+环境变量配置).rar

    通常需要将Erlang的bin目录添加到系统的PATH环境变量中,这样在任何目录下都可以通过命令行调用Erlang的工具和应用程序。例如,Erlang的`erl`命令行接口,用于启动Erlang shell,进行交互式编程或执行Erlang模块。 ...

    Erlang中文手册.pdf

    - **1.2.9 变量的匹配、守卫和作用域**:深入讲解Erlang中变量的行为和模式匹配。 - **1.2.10 更多关于列表**:讲解列表的高级特性。 - **1.2.11 If和Case**:解释条件语句的使用。 - **1.2.12 内建函数(BIFs)**:...

    erlang 中文基础教程

    在Erlang Shell中,你可以像使用计算器一样进行简单的算术运算,如`2+5.`,其中`.`是必要的结束符号,表示计算完成。Shell会返回结果`7`,并在下一行显示出新的提示符`2>`。这种即时反馈的特性使得Erlang Shell成为...

    esl-erlang_23.0_windows_amd64.exe rabbitmq-server-3.8.4.exe

    3. erlang要以管理员身份安装运行,并设置ERLANG_HOME环境变量。以及在path中设置ERLANG_HOME的bin目录 4. erlang安装后要检查能否编译成功一个helloworld文件。 5. rabbitMQ无法安装插件时非常有可能是erlang出问题...

    erlang 中进程

    下面将详细介绍Erlang中的进程以及如何使用它们进行并发开发。 1. 进程概念 在Erlang中,进程不同于操作系统中的线程或进程。它们是独立的执行流,有自己的堆栈和局部变量,但共享全局的Erlang虚拟机(VM)。每个...

    并发需求下的Scala及Erlang语言的比较与使用

    ### 并发需求下的Scala及Erlang语言的比较与使用 在当今的高并发、大数据处理场景下,选择合适的编程语言对于系统性能至关重要。在众多编程语言中,Scala和Erlang因其强大的并发处理能力和函数式编程特性而受到关注...

    使用erlang自带的处理日常的xml

    这个是平时工作中使用到的xml处理,使用的是erlang自带的方法加上自已的一个调整使用的,没找到可以选1分的地方

    erlang 中文,chm参考文档

    7. **编译和运行**:指导如何编译和运行Erlang程序,以及调试工具的使用。 8. **标准库**:详述Erlang标准库中的各种模块和函数,如列表操作、文件I/O等。 "erlang深度分析.pdf"可能是对Erlang更深入的探讨,可能...

    erlang25.0 windows版本

    3. **环境变量**:安装过程中,安装程序可能会自动添加Erlang的bin目录到系统的PATH环境变量中,确保命令行可以识别`erl`等Erlang命令。 4. **验证**:安装完成后,打开命令行窗口并输入`erl`,如果Erlang成功安装,...

    erlang 中文乱码

    在IT行业中,Erlang是一种强大的并发编程语言,主要用于构建高可用性、容错性和分布式系统。当我们在处理中文字符时,特别是在Erlang环境中,可能会遇到“中文乱码”的问题。这个问题通常与字符编码、文件读写以及...

    erlang资源

    6. **并行算法**:书中可能包含实例,演示如何使用Erlang实现高效的并行算法,提升计算性能。 《Erlang入门手册》则可能包含以下基础内容: 1. **Erlang语法**:涵盖基本的变量、数据类型(如原子、列表、元组和二...

    erlang9.rar

    安装过程中,你可能会被询问是否要添加Erlang环境变量到PATH,这个选项建议选中,以便在命令行中可以直接使用erl命令。此外,安装路径的选择也很关键,最好选择一个不会频繁变动的位置,以避免日后升级或重装带来的...

    硝烟中的erlang

    诊断以及调试生产环境中的Erlang 系统。在程序员学习新的语言和环境时,都需要一个摸索 阶段,也就是学会在社团的帮助下,脱离指南,解决实际问题。 本书假设读者精通基本的Erlang和OTP框架。在本书中,会对一些难以...

    erlang编程 Introducing Erlang

    Erlang中的链接(Linking)和监控(Monitoring)机制允许进程间建立关系,以便在另一进程崩溃时得到通知。链接用于追踪相关进程的状态,而监控则可以观察进程的生存状态。 ### 5. 消息传递 Erlang的进程间通信主要...

    xiandiao_erlang_Erlang课后习题_

    5. **简洁的错误处理**:Erlang使用“let it crash”哲学,鼓励快速失败和快速恢复。错误通常通过抛出异常来处理,而不是通过复杂的错误检查逻辑。 6. **模式匹配**:Erlang的函数调用允许模式匹配,使得解构复杂...

    <27>erlang record

    通过分析`ets_test.erl`源码,我们可以深入理解Erlang中的Record是如何与ETS结合使用的,以及如何在实践中提高代码效率和可维护性。不过,由于具体源码未给出,这部分只能进行推测,实际的内容还需要查看源码文件...

Global site tag (gtag.js) - Google Analytics