日期:2014-05-17  浏览次数:20911 次

构建Erlang在Windows下的开发环境
1、下载Windows下的Erlang运行环境otp_win32_R14B01.exe
2、设置路径
将erl的执行文件的路径加入到Path
3、加入库路径
设置Erlang的classpath,即代码的存放位置:code:add_patha("c://ma//Erlang").
或者切换到代码存放的目录后运行erl,
4、编写erl程序并编译
c(模块名).

如何退出erlang 的shell
? ^G + d
? ^C + a
? erlang:halt(). 暴力退出,很快,但是如果打开了一个很大的数据库的话,下次启动可能要作recover
? q(). 或者init:stop(). 将关闭所有打开的文件,停止数据库,按次序停止所有的OTP程序

修改开发环境
? 代码查找路径(类似于classpath),可以通过code:get_path().查看当前的路径
? @spec code:add_patha(Dir) => true | {error, bad_directory}  加在最前面
? @spec code:add_pathz(Dir) => true | {error, bad_directory}  加在最后面
? 通过code:all_loaded().查看当前装载的代码
? code:clash().可以帮助检查在路径上的名字冲突
?
? 1. 可以修改$HOME/.erlang 来设置路径,例如:
? code:add_patha("/home/argan/erl").
? 2. 也可以通过命令行参数来指定,例如:
? erl -pa /home/argan/erl/ -pz /home/argan/erl2/ -pz /home/argan/erl3/
? 3. 当前路径的.erlang 比$HOME/.erlang优先级高
? 4. 可以通过init:get_arguments().和init:get_argument(ArgumentName).来查看参数

运行程序
? 1. 在shell里运行c(module). module:func(param).
? 2. 在命令行erl -noshell -s hello start  -s init stop
? 3. 还可以不写文件,直接eval,例如
? erl -eval 'io:format("Memory: ~p~n" , [erlang:memory(total)]).'  -noshell -s init stop
? 4. 用escript,需要一个main,例如:
#!/usr/bin/env escript
main(_) ->
    io:format("Hello world\n" ).


erlang shell
? 有部分emacs风格的键盘绑定
? ^A 行首
? ^E 行尾
? ^F 前进
? ^B 后退
? ^P 上一行
? ^N 下一行
? ^T 交换最后两个字符
? Tab 自动补全module名和function名,很好用啊!!
? 创建一个user_default module,里面的函数也都可以直接在shell里调用
? webtool:start().有很多工具可以使用,比如分析crash dump的工具