我们想快速测试一个小功能,第一个反应就是打开Erl shell 直接输入,但是当想测试一个复杂的函数时,一般会写成一个*.erl文件,然后在shell下:
每次都为一个小功能设置FileDir,好烦!
方法1 . 在erlang工作目录【在erl shell中运行pwd()显示的目录】建立一个.erlang文件,输入:
看到successfully表明ok了,原理:erlang shell启动时会首先找当前目录下的.erlang执行的,所以让它启动时都自动cd到测试目录。 方法2. 由于前一种方法,只能设置一个测试目录且输入的*.beam文件与原文件同一目录下,假如,我们在多个目录下有文件,且想输入的测试文件都在一个统一的文件目录下,怎么办? 就是说:不管FileName在哪里?,打开erl就可以用c(FileName).输出beam也在统一的一个目录下。 Prework: 2.1 编写自己的user_default.erl
2.2
把user_default.erl编译成beam文件后放在HOME【erlang shell 启动时pwd()的目录下】
拓展和收获:
1.
在shell中使用的很多函数最终都会在c.erl里面调用,感兴趣可以看看哦。
2.
compile:file里面的option很丰富,有意思的有’P’,’E’….生成的文件把头文件都拓展开了,可以看下,
小坑:虽然可以用{outdir,Dir}指定输出目录,但是不可以指定原文件目录,只能用{i,Dir}指定头文件目录。这就是为什么上面的cfile函数要先cd到目标目录才编译的原因。
3. 内置的c(FileName)
有一个额外的功能:只要成功了,就会用最新的文件替换掉旧的文件,热更新,它是用compile:file/1 和 l/1实现的.
4. code:add_path/1对同一个路径执行多次和一次的效果是一样的,自己会做去重操作。