Erlang 速查表 v1.0

昨天下了个Erlang速查表,不过是英文的有点不习惯。百度了下居然没有其他的版本。今天脑抽把原本的pdf转为word后翻译,因为转换时格式出问题,所以最后直接搞成两页了。另外添加了些个人查到的一点资料。

原版:http://www.cheat-sheets.org/saved-copy/Erlang.CheatSheet(1.0).pdf


Erlang 速查表 v1.0

 

Variable变量  %注释 (大写字母开头)

Str = "John Doe".  % 字符串保存为整数列表.


% 打印输出值

io:format("Name is: ~s~n", [Str]).

io:fwrite("Name is: ~s~n", [Str]).

~n => 换行

~s => 参数是一个字符串、I/O列表或原子,打印时不带引号

~f => float浮点数

~w=>标准输出.类似 Object.toString().

~p=>类似 ~w 但会在每一行后中断(把参数打印为美观的形式)


List = [1,2,3,4].  % lists列表

NewList = [6, 7, List] 

返回[6,7, [1,2,3,4]]  %添加到新列表

> [H|T] = AList.

["a","b",{1,2,3}]  % 返回Head列表头和Tail列表尾. H和T都是没有绑定的变量.


Tuple = {1.0, 2.0, 3.0}

element(2, Tuple) 返回2.0 % 元组索引

{_, Second, _} = Tuple 保存2.0为变量Second % 模式匹配来检索一个值


列表和元祖能包含任意类型的数据.

> Atuple = {1,2,3}.

{1,2,3}

> AList = ["a", "b", Atuple].

["a","b",{1,2,3}]

> Anewtuple = {atom1, atom2, AList}.

{atom1,atom2,["a","b",{1,2,3}]


Function函数:

匿名函数:

F = fun(X) -> X end.  % F(10)打印10

命名函数:

method_name(Arg) ->

Arg.


% 对列表的每个元素都执行操作

> L = [1,2,3,4,5].

[1,2,3,4,5]

> lists:map(fun(X) -> 2*X end, L).  % 使用lists模块中的map方法

[2,4,6,8,10]

> [2*X || X <- L].  % 或者使用列表推导式

[2,4,6,8,10]


atom or ‘ATOM’ %原子由小写字母开头,否则加单引号


Macro宏:

-define(macro1, Replacement)

?macro1  %用这种方式使用宏 


Erlang Shell:

c(ModuleName)  % 编译模块

cd("dirname")  % 改变目录

f()  % 清空所有绑定

rr("records.hrl")  %读取一个record(记录)文件

rf(record_name)  %忘记record文件


Record记录:

-record(todo, {status=reminder,who=john,text}).

%创建该记录的实例

X = #todo{status=urgent}.

%使用模式匹配,从记录中提取值

#todo{status=S} = X.

X#todo.status  %%获取单个字段.


% ++是中缀插入操作符

> [1] ++ [2] ++ [3].

[1,2,3]

% X--Y是列表移除操作,它从 里移除 中的元素.


使用模式匹配/递归替换迭代.

total([{What,N|T}]) -> cost(What) * N + total(T);

total([]) -> 0.


File attributes模块属性 % -import, -export, -module

-module(modulename). %模块声明。必须是文件里的第一个属性。必须与文件名相同

-export([Func_a/0, Func_b/1]).  % 指定向外界导出的函数列表

-import(lists, [map/2]).  % 导入模块和方法列表

-compile(Options).     %设置编译选项,比如export_all 
-vsn(Vsn).         %模块版本,设置了此项,可以通过beam_lib:version/1 获取此项信息 

%% 可以通过-include-include_lib来包含文件,两者的区别是include-lib不能通过绝对路径查找文件,而是在你当前Erlanglib目录进行查找(注意: -record(...)-include(...) 有着类似的语法,但是不算模块属性)

-include(Filename).

-include_lib(Name).


case Expression of

Pattern1 [when Guard1] -> Expr_seq1;

Pattern2 [when Guard2] -> Expr_seq2

end.

来源:http://weblogs.asp.net/nleghari


翻译的pdf文档:http://download.csdn.net/detail/heybob/9612991


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值