(四)Lua标准库与文件
接上一篇 (三)Metatables和面向对象
10、Lua常用标准库
1)math库
2)string库
结果:
3) os库(clock, date, time )
结果:
4) io库
11、文件的加载与运行
当我们需要加载与运行已有文件中的Lua代码时,可以用以下几种方式:
(1) loadstring( str ) --- 加载字串
loadstring()本是函数,由于参数是string,所以没有加括号。loadstring()执行完之后,
只是加载解析, 并没有执行。返回的是一个function类型。执行该函数便可以运行。相当于:
(2) loadfile( file_name ) --- 加载文件
这个函数相当于从文件里读出string,然后再调用loadstring(file_text)实现加载功能。
(3) dofile( file_name ) --- 加载并执行文件
相当于loadfile()之后,返回一个函数,再调用这个函数。
(4) require( file_name )
这个函数是通过调用dofile()来实现的。不同的是,每次加载执行一个文件时,
require()都会记录,避免重复加载。另外,如果给定的路径找不到文件,require()会到
指定的路径下去找寻到要加载的文件。文件名称可以省去.lua后缀。
我们可以直接使用require(“model_name”)来载入别的lua文件,载入的时候就直接
执行那个文件了。比如,我们有一个hello.lua的文件:
如果我们:require(“hello”),那么就直接输出Hello, World!了。
注意:
1)require函数,载入同样的lua文件时,只有第一次的时候会去执行,后面的相同的都不执行了。
2)如果你要让每一次文件都会执行的话,你可以使用dofile(“hello”)函数
3)如果你要玩载入后不执行,等你需要的时候执行时,你可以使用 loadfile()函数,如下所示:
loadfile(“hello”)后,文件并不执行,我们把文件赋给一个变量hello,
当hello()时,才真的执行。当然,更为标准的玩法如下所示。
假设我们有一个文件叫mymod.lua,内容如下:
文件名:mymod.lua
于是我们可以这样使用:
其实,require干的事就如下:(所以你知道为什么我们的模块文件要写成那样了)
参考:
如果你还比较喜欢Lua的话,下面是几个在线文章你可以继续学习之:
Lua官网
book.luaer.cn
由于本人对Lua面向对象等的使用和理解还不深刻,这里参考了博文 酷 壳 – CoolShell.cn,
和 Lua学习总结 这里感谢这两位位博主! 由于对于Lua与C/C++的交互部分也不熟悉,因此这里
就不作过多陈述了。