Erlang(9):常识补充
来源:互联网 发布:mysql下载32位 win7 编辑:程序博客网 时间:2024/06/08 19:33
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.以_开头的变量,声明了,不使用,编译器也不会发警告。
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.以_开头的变量,声明了,不使用,编译器也不会发警告。
1 0
- Erlang(9):常识补充
- 补充一些常识
- Erlang gen_tcp补充(1)
- Erlang gen_tcp补充(2)
- Android 开发常识(不断更新中,欢迎补充)
- 【第二届】Erlang Fans交流会(补充事宜)
- 数据库操作常识小记 20140323 补充中。。
- 真低调,真聪明——Erlang大会记草原(补充三点)
- erlang 列表处理函数 (lists) 补充
- 日常生活小常识(9)
- erlang浅谈(3)-Erlang系统特点
- Erlang(1):安装erlang虚拟机
- VC 常识(一)
- VC 常识(二)
- VC 常识(三)
- VC 常识(四)
- VC 常识(五)
- VC 常识(六)
- 密码输入框内禁止记住密码导致的自动填充
- awt--布局管理器的BoxLayout
- 使用C++实现快速排序QuickSort
- Repeater全选操作
- dpkg: error processing package linux-image-generic (--configure): dependency problems - leaving unco
- Erlang(9):常识补充
- 咱们聊聊【BOM】吧
- JAVA中将一个List等分成n个list的工具方法
- GridView分页功能
- Android 国际化中出现的坑
- CentOS6.5下Redis安装与配置
- BZOJ2653——middle
- Flex 页面空白或Error #2032: 流错误处理办法
- 解析BroadcastReceiver之你需要了解的一些东东