zoukankan      html  css  js  c++  java
  • Erlang技巧备忘

    1、and or 和andalso orelse的区别

    and和or会计算两边的表达式,而andalso和orelse的求值采用短路机制,比如exp1 andalso exp2,当exp1返回false之后,就不会去求值
    exp2,而是直接返回false,而exp1 and exp2会对exp1和exp2都进行求值,or与orelse也类似。

    2、在Erlang中小于等于是用=<表示,而不是一般语言中的<=语法,同样,不等于都是用/号,而不是!,比如/=、=/=。

    3、Erlang的保留字有:

    after and andalso band begin bnot bor bsl bsr bxor case catch cond div end fun if let not of or orelse query receive rem try when xor

    基本都是些用于逻辑运算、位运算以及特殊表达式的符号

    4、模块的预定义属性:
    -module(Module).    声明模块名称,必须与文件名相同
    -export(Functions).   指定向外界导出的函数列表
    -import(Module,Functions).   引入函数,引入的函数可以被当作本地定义的函数使用
    -compile(Options).     设置编译选项,比如export_all
    -vsn(Vsn).         模块版本,设置了此项,可以通过beam_lib:version/1 获取此项信息
    可以通过-include和-include_lib来包含文件,两者的区别是include-lib不能通过绝对路径查找文件,而是在你当前Erlang的lib目录进行查找。

    5、宏,定义常量或者函数等等,语法如下:
    -define(Const, Replacement). -define(Func(Var1,...,VarN), Replacement).
    使用的时候在宏名前加个问号?,比如?Const,Replacement将插入宏出现的位置。系统预定义了一些宏:
    ?MODULE 表示当前模块名
    ?MODULE_STRING 同上,但是以字符串形式
    ?FILE 当前模块的文件名
    ?LINE 调用的当前代码行数
    ?MACHINE 机器名
    Erlang的宏与C语言的宏很相似,同样有宏指示符,包括:

    -undef(Macro).
    取消宏定义
    -ifdef(Macro).
    当宏Macro有定义的时候,执行以下代码
    -ifndef(Macro).
    同上,反之
    -else.
    接在ifdef或者ifndef之后,表示不满足前者条件时执行以下代码
    -endif.
    if终止符
    假设宏-define(Square(X),X*X).用于计算平方,那么??X将返回X表达式的字符串形式,类似C语言中#arg
  • 相关阅读:
    Hackerrank alien-flowers(数学公式)
    Hackerrank manasa-and-combinatorics(数学推导)
    Codeforces 314B(倍增)
    Codeforces Round #403(div 2)
    Mutual Training for Wannafly Union #6
    几道splay
    高数(A)下 第十章
    Bestcoder #92
    codevs1700 施工方案第二季
    poj2631
  • 原文地址:https://www.cnblogs.com/samis/p/2034957.html
Copyright © 2011-2022 走看看