读书人

Erlang顺序编程(2)

发布时间: 2012-10-08 19:54:56 作者: rapoo

Erlang顺序编程(二)
case/if语法:
case表达式语法:

-module(define).-export([test1/0]).-ifdef(debug).-define(Trace(X), io:format("Trace ~p:~p ~p~n",[?MODULE,?LINE,X])).-else.-define(Trace(X),void).-endif.test1() -> loop(5).loop(0) ->    void;loop(N) ->    ?Trace(N),loop(N-1).

Io:format(String,[Args]):会根据String中的格式信息在Erlang shell中打印[Args]中的变量。格式化代码具有一个前缀(~),~p是完整打印的缩写,~n是产生一个新行。

这段代码在编译时需要开启或者关闭trace宏,{d,debug}把调试标志设为true以便在宏定义的-ifdef(debug)片段中能被识别,当关闭这个宏时,trace宏就被扩展为原子void.

进程字典:
erlang中每一个进程都有自己的私有数据存储,称为进程字典。进程字典由一系列key-value组成。一个key对应一个value.
put(key,value) -> OldValue|undefined.
get(key) -> Value|undefined
get() -> [{key,value}...]
get_keys(value) -> [key]
erase(key) -> value|undefined,最后删除这对key-value.
erase() -> [{key,value}...] 清空进程字典。

引用:引用是一个全局唯一的erlang值,使用erlang:make_ref()来创建引用。

比较表达式:
X>Y:X大于Y。
X==Y:X等于Y。
X<Y:X小于Y。
X/=Y:X不等于Y。
X=<Y:X小于等于Y。
X>=Y:X大于等于Y。
X =:=Y:X全等于Y。
X=/=Y:X不全等于Y。
为了进行比较,Erlang按照下面的方式为所有类型都定义了大小比较的顺序。
Number<atom<reference<fun<port<pid<tuple<list<binary.
说明:数值(任何值)总比原子小。
如果参数为数值,那么所有的比较操作符,除=:=和=/=之外,都遵循以下规则:
1.如果一个参数为整型,一个为浮点型,那么整型需要在比较之前转换为浮点型。
2.如果两个参数都是整型或者浮点型,那么参数无须转换,以原来类型比较。
==仅仅适用于浮点数和整数的比较。

为文件加载器设定搜索路径:
可以使用code:get_path()来查看当前加载路径的值。
code:add_patha(Dir) -> true|{error,bad_directory} 在加载路径开头增加一个新目录。
code:add_pathz(Dir) -> true|{error,bad_directory} 在加载路径末尾增加一个新目录。
code:all_loaded():返回一个所有被加载的module列表。
code:clash():查看出错的module.

查看系统的home目录:init:get_argument(home).
查看系统内存:erlang:memory(total).

-compile(export_all):特别声明,它告诉编译器把模块中每个函数都导出。




读书人网 >编程

热点推荐