zoukankan      html  css  js  c++  java
  • erlang 中带下划线变量的使用

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

    Erlang代码  收藏代码
    1. {A, _, [B|_], {B}} = {abc, 23, [22, 23], {22}}  

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

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

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

    Erlang代码  收藏代码
    1. {Name,_Age}={"Argan",30}  

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

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

    Erlang代码  收藏代码
    1. {A, _int, [B|_int], {B}} = {abc, 23, [22, 23], {22}}  

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

    留此记录。

  • 相关阅读:
    在CentOS7 安装 Redis数据库
    Gulp-构建工具 相关内容整理
    Mac中设置Sublime快速在终端中使用命令打开项目
    CentOS 7.6出现SSH登录失败的解决方法
    使用 Vagrant + VirtualBox 快速构建 CentOS 下的 Docker 环境
    平凡的世界
    EBR内容解析
    MBR内容解析
    使用vbs给PPT(包括公式)去背景
    Ubuntu 14.04 LTS 初装成
  • 原文地址:https://www.cnblogs.com/fvsfvs123/p/4208073.html
Copyright © 2011-2022 走看看