笔记二

最近看了很多erlang示例,再次做下笔记.

Erlang的数据类型基本上包括以下几类:字符串,数值,二进制,原子(atom),元祖({}),数组([,]).

其中还有几个内置的:pid,端口,引用. 很多地方用到pid,获得自身的pid:self(). 也可以这样定义pid(x,y,z).

Erlang宏定义:-define(THIS_IS_MACRO,thisisreallymacro).
他也有内置宏:

  • ?MODULE"     是当前模块
  • ?FILE            当前文件名
  • ?LINE            当前行
Erlang选择语句:
switch ... of
    ***->;
    _->  %% 其他的全部zhelich
end.
if
   ***->;
   true->;  %% 其他的全部这里处理
end.

还有个when条件处理,这里有个问题就是if语句总有个'true',而且跟switch中的'_'作用一样,为什么是true,而不是false,或者是其他呢? 这个问题...... 就理解为if进来的条件肯定都为true.

Erlang异常捕捉和c++一样也有try...catch

try
  ......
catch
  _:_ -> ***
end.
try
of
catch
end.
try
after %% 和其他语言finally很像
catch
end.

catch也可以单用,见到的地方问多,可防止出错以后抛异常,导致erlang进程崩溃.一般用在数据库操作那很多.
(catch ...表达式...).

erlang进程之间的数据都是独立的,我们开发系统的时候肯定有共享的数据,那么这些数据怎么处理才能共享呢.其中最常用的就是ets.
使用方法:

-record(user,{name,pass,email="@"}).

ets:new(ets原子, [f1,f2,f3(字段名和user一样)]),
User = #user{name=Name,pass=Pass},
ets:insert(ets原子, User),
Name = "name",

Ms = ets:fun2ms(fun(U) when U#user.name=:=Name -> U end),
Fun = fun(T)-> T end,
L = ets:select(ets原子, Ms),
lists:foreach(Fun, L),

ets:lookup(ets原子, Name), %% 默认查找第一个字段
ets:delete(ets原子, Name),

%% 还有
ets:match_object
ets:match_delete
ets:tab2list
ets:delete_all_objects

 

有很多代码中有个"-behaviour",中意:"行为".目前个人理解为设计模式.Erlang系统内部已经实现了各种模式.
用的最多的是 -behaviour(gen_server). 需要实现以下函数:init/1,  handle_event/3, handle_sync_event/4,  handle_info/3, terminate/3, code_change/4
就像c++接口一样,必须实现函数,不然编译通不过.具体函数调用都是系统底层已经实现.

 

一些常用指令:
当前目录: pwd().
目录下文件:ls().
进入目录:cd("***").
编译: c(module_name,[debug_info]).  加入调试信息,以便后面调试用.
动态加载: l(module_name).
系统监视:appmin:start().
简单的调试步骤:

  • 启动调试:int:start().
  • 加载模块:int:i(module_name).
  • 设置断点:int:break(module_name,LineNum).
  • 启动debug调试器:im().
  • 启动: ....... 然后就会中断在断点那了.
  • 退出调试 int:stop().

 

 

 

 

转载于:https://my.oschina.net/gameserver/blog/72822

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值