Lua中的loadfile、dofile、require详解
生活随笔
收集整理的這篇文章主要介紹了
Lua中的loadfile、dofile、require详解
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
這篇文章主要介紹了Lua中的loadfile、dofile、require詳解,本文分別用實例講解它的用法和特點等內容,需要的朋友可以參考下
print(“hello”);
function hehe()
print(“hello”);
end
這個文件里有一句代碼,和一個函數。試試用loadfile加載這個文件,如下代碼:
復制代碼代碼如下:
??? loadfile("hellofile.lua");
??? print("end");
[LUA-print] end
如果說loadfile會執行文件里的代碼的話,那么,應該會輸出hello字符串的。
結果表明,它是不會執行代碼的。
??? dofile("E:/Android/wordspace_cocosIDERc0/CocosLuaTest/src/hellofile.lua");
??? print("end");
[LUA-print] hello
[LUA-print] end
這里有點尷尬,文件路徑我用了絕對路徑,因為dofile在Coco Code IDE里使用相對路徑會找不到文件(即使使用了addSearchPath)
??? for i = 1, 2, 1 do
??????? require("hellofile.lua");
??? end
??? print("end");
[LUA-print] hello
[LUA-print] end
和我們說的一樣,調用了兩次,但是代碼只執行了一次。
如果這里換成dofile,則會輸出兩次hello字符串
本來今天不應該討論這幾個函數的,不過,為了湊字數..不,為了方便以后的文章,還是要談談這幾個基礎函數的~
1.loadfile——只編譯,不運行
loadfile故名思議,它只會加載文件,編譯代碼,不會運行文件里的代碼。
比如,我們有一個hellofile.lua文件:
print(“hello”);
function hehe()
print(“hello”);
end
這個文件里有一句代碼,和一個函數。試試用loadfile加載這個文件,如下代碼:
復制代碼代碼如下:
??? loadfile("hellofile.lua");
??? print("end");
輸出結果如下:
[LUA-print] end
如果說loadfile會執行文件里的代碼的話,那么,應該會輸出hello字符串的。
結果表明,它是不會執行代碼的。
2.dofile——執行
很明顯,dofile就是會執行代碼的家伙了,如下代碼:
??? dofile("E:/Android/wordspace_cocosIDERc0/CocosLuaTest/src/hellofile.lua");
??? print("end");
輸出結果如下:
[LUA-print] hello
[LUA-print] end
這里有點尷尬,文件路徑我用了絕對路徑,因為dofile在Coco Code IDE里使用相對路徑會找不到文件(即使使用了addSearchPath)
不過沒關系,不影響本文的內容。
3.require——我只執行一次
require和dofile有點像,不過又很不一樣,require在第一次加載文件的時候,會執行里面的代碼。
但是,第二次之后,再次加載文件,則不會重復執行了。換句話說,它會保存已經加載過的文件,不會重復加載。
測試代碼如下:
??? for i = 1, 2, 1 do
??????? require("hellofile.lua");
??? end
??? print("end");
為了說明這種情況,我刻意調用了兩次require,輸出結果如下:
[LUA-print] hello
[LUA-print] end
和我們說的一樣,調用了兩次,但是代碼只執行了一次。
如果這里換成dofile,則會輸出兩次hello字符串
總結
以上是生活随笔為你收集整理的Lua中的loadfile、dofile、require详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Lua基础之math(数学函数库)
- 下一篇: lua的面向对象编程,封装,继承,多态的