Erlang(9):常识补充

1. apply apply(Mod, Func, [Arg1, Arg2, ..., ArgN]) 等价于 Mod:Func(Arg1, Arg2, ..., ArgN) 区别在于,使用apply,Mod和Func是能够算出来的。 不推荐使用apply,许多分析工具都没法得知发生了什么,编译器优化也可能无论用。 2.元数 函数参数的数量叫作元数。 函数名相同,元数不一样,算是不一样的函数。 3.属性 模块属性的语法是-XXX(...). -module(modname). 模块声明,必须是第一个属性。必须跟文件名同样。 -import(Mod,[Name1/Arity1, Name2/Arity2,...]) 导入了以后,就无需指定模块名了。 -export([Name1/Arity1, Name2/Arity2, ...]). 导出了以后,模块外可使用这些函数了。 -compile(Options). 添加Options到编译器选项列表中。 -vsn(Version). 指定模块版本号 用户定义属性 -XXX(Vaule). 好像没什么不一样啊。 自定义的属性,会表现为{attributes, ...}的下属数据。 经过module_info()函数能够返回一个属性列表,内含全部与编译模块相关的元数据。 module_info(X)能够返回单个属性 beam_lib:chunks("attrs.beam",[attributes]).在不载入模块代码的状况下提取属性 4.块表达式 使用 begin ... end 包着,就像C++的{}同样。 5.注释 %,没有块注释 6.动态代码载入 每次调用函数的时候,都是最新的程序。 更新后,旧版本的程序还在运行,可是erlang只会运行两个版本的程序。 若是再多一个新版本,最旧的就会被清除。 7.包含文件 -include(Filename). 通常是包含.hrl文件。 8.++表示列表相加,--表示列表相减 相减的时候,若是重复出现的元素,只会移除对应的次数,而不必定是所有移除。 9.宏 -define(XXX,YYY).把?XXX替换成YYY。记得要使用?  -undef(Macro). 取消宏的定义 -ifdef(Macro). 仅当有过定义时才执行后面的代码。 -ifndef(Macro). 仅当Macro未定义才执行后面的代码。 -else.  -elseif 含义跟C++的差很少 10.数字 整数: K进制整数,K#Digits,最高进制数是36。 其实更加高的也能够,只是没法输入和输出显示而已。 11.比较 >   大于       <  小于 =<  小于等于   >= 大于等于 ==  等于,只有比较整数和浮点数的时候才用 /= 不等于 =:= 彻底相等,通常状况下应该用这个 =/= 不彻底相等 12.以_开头的变量,声明了,不使用,编译器也不会发警告。
相关文章
相关标签/搜索