我們想快速測試一個小功能,第一個反應就是打開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對同一個路徑執行多次和一次的效果是一樣的,自己會做去重操作。