博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
笔记二
阅读量:5948 次
发布时间:2019-06-19

本文共 1696 字,大约阅读时间需要 5 分钟。

hot3.png

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

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

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

Erlang宏定义:-define(THIS_IS_MACRO,thisisreallymacro).

他也有内置宏:

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

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

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

try  ......catch  _:_ -> ***end.
tryofcatchend.
tryafter %% 和其他语言finally很像catchend.

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_objectets:match_deleteets:tab2listets: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

你可能感兴趣的文章
Latex格式html文件转换pdf和docx文档
查看>>
【关于Number】JavaScript中关于Number的操作
查看>>
非泄露,NSA官方开源反汇编工具GHIDRA
查看>>
保持分布式团队同步
查看>>
Node.js v7 Beta版引入citgm
查看>>
微服务没有银弹 | Weibo Mesh 的工程化实践解读
查看>>
让你的系统“坚挺不倒”的最后一个大招——「降级」
查看>>
Git 2.5增加了工作树、改进了三角工作流、性能等诸多方面
查看>>
搭载AI引擎,腾讯云云镜开启全面防护模式
查看>>
不仅有Ubuntu,这家公司的Ubuntu Core预计使用翻倍
查看>>
JMS机制
查看>>
Grumpy:Google 用 Go 开发的 Python 运行时
查看>>
Kubernetes 1.14 版本发布:正式支持Windows 节点,持久化本地卷进入GA
查看>>
区块链和数据科学:如果同时应用这两种技术,将会实现什么?
查看>>
AVG插件泄漏Chrome用户数据
查看>>
免费微信公众号专用h5在线电影票API
查看>>
专访刘刚:360手机卫士的性能监控与优化
查看>>
FB正在大规模重构React Native,预计今年发布
查看>>
从0到1:腾讯Yoo视频底层页推荐系统实践
查看>>
推荐10个CI/CD工具,用于云平台集成交付
查看>>