erlang趣事二

以前都是在erlang shell里进行c(),编译文件。今天看了坚强哥的erlang的Emakefile所以尝试了下。

先写一个Emakefile

%% -*- mode: erlang -*-
{"src/*", [debug_info, 
           {outdir, "ebin"},
           {i, "include"}
]}.
    
启动的时候。我是在windows下运行的、

写个cmd文件。

werl -name [email protected] -pa ebin

首先确定你配置好了环境变量。可以打开命令窗口输入erl 看看是否进入erlang shell界面。

werl是打开erlang shell,加上w是启动erlang shell,我不喜欢在命令窗口敲。

-name 是起节点名字。

-pa  指定beam的目录。

----------------------------------------------------------------------------------------------------------------------------------------------------------

下边看源码

	-module(test).
	
	%%% =================================================================
	%%% API functions
	%%% =================================================================
	-export([get_number/0]).
	
	
	
	%%% =================================================================
	%%% Internal functions
	%%% =================================================================
	
		get_number()->

              lists:seq(1,10).	
	  </span>
点击cmd文件  

Erlang/OTP 18 [erts-7.0] [64-bit] [smp:4:4] [async-threads:10]

Eshell V7.0  (abort with ^G)
([email protected])1> make:all().
Recompile: src/test
up_to_date
([email protected])2> test:get_number().
[1,2,3,4,5,6,7,8,9,10]

此时,我们将源文件修改
	
		get_number()->

              lists:seq(1,8).	
	  
此时在运行
([email protected])3> make:all().
Recompile: src/test
up_to_date
([email protected])4> test:get_number().
[1,2,3,4,5,6,7,8,9,10]
发现还是运行的上次的。但是已经提示我们编译了。这是为什么呢。

后来发现erlang虽然编译了但是没有加载需要加载下。l().加载文件。

([email protected])5> l(test).
{module,test}
([email protected])6> test:get_number().
[1,2,3,4,5,6,7,8]
([email protected])7> 

好了。大家玩的高兴。。。。

你可能感兴趣的:(erlang)