Erlang遇到的特殊问题,例子详解

1.apply
   向一个模块的某个函数传递参数并调用次函数,与直接调用的区别在于,模块名和函数名可以动态计算
   eg:apply(erlang,atom_to_list,[hello]). %用apply调用BIF
   缺点:要尽量避免使用,因为编译器不能进行优化。
2.-AtomTag()
   为模块属性,定义文件属性,Erlang模块属性分为预定义和用户定义属性,
   1.预定义:-module(m), 模块名
         -import(mod,[Name/1]).从别的模块导入参数或函数
   2.用户定义模式:
    -SomeTag(Value)
 3.布尔类型
      用原子true,false
      not B1 逻辑非
      B1 and B2 逻辑与
      B1 or B2 逻辑或
      B1 xor B2 逻辑异或
4.列表操作符++和--
   ++ -- 是对列表进行添加和删除的中缀操作符
   1> [1,2]++[4,5].
[1,2,4,5]
2> [a,c,1,2]--[1,2].
[a,c]
3> [a,1,1,1,]--[1,1].
* 1: syntax error before: ']'
3> [a,1,1,1,2]--[1,1].
[a,1,2]
4> [a,1,1,1,2]--[1,1,1].
[a,2]
5> [a,1,1,1,2]--[1,1,1,1].
[a,2]
6>
   模式匹配中的++
     直接在后面添加
5.宏定义  
    当Erlang预处理epp到?Module时,这个宏就会被预处理器扩展,在宏定义中出现的变量就会匹配到宏调用处的完整形式
  eg:
   -define(mac(X,Y),{a,X,Y}).
    fo(A)->
    ?mac(A+10,b).
      这个宏执行之后
       fo(A)->
         {a,A+10,b}.
   一些当前模块的宏定义信息
    ?FILE 扩展当前文件名。
    ?MODULE 当前模块名
    ?LINE 当前行号。

6.宏定义流程
    在宏的内部,还支持流程指令
     -undef(Mac):取消宏定义,
     -ifdef(Mac):只有Mac被定义之后才能进行代码运算。
     -ifndef(Mac):只有在不定义Mac之后才能进行代码运算
     -else  在ifdef或ifndef 之后出现,如果条件为             false,后面代码才能执行,
     -endif 标记ifdef,indef结束。
7.数值类型
   Erlang 的数值类型为整型,浮点型
   浮点型范围为-10的323次方-10的308次方
8.操作符优先级
   :,#,
9.进程字典
   Erlang 每个进程都有自己私有的数据存储,为进程字典,(其他语言的映射)
   语法为:put(Key,Value),如果之前没有关联,返回值为          undefined
           get(Key)->Value
       get()   ->[{Key,Value}].返回整个字典
       get_keys(Value)-> [Key]  返回键值
       erase()-> 删除
*** 进程字典定义之后,再定义时就是覆盖掉先前定义的字典     所以尽量避免使用。

10.引用
    引用是全局唯一的erlang值,使用erlang:make_ref()创建,适用于创建那些唯一标签的场合。
 
 
 11.比较表达式:
   Erlang 类型大小顺序
    number<atom(原子)<reference(参数,引用)<
    fun<port(端口)<pid<tuple(元组)<list<binary
 
 
 12.下划线变量
     1.命名一个不准备使用的变量  open(File,_Mode)
                                 比open(File,_)更具可读行。
     2.some_func(X)->
         {P,Q}=some_func(X),
      io:format("Q=~p~n",[Q]),
      p.%这样编译不会报错
      但要是注释掉io输出语句就会警告,要是把Q换成_Q 就不会出警告
   


   
       
  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值