(四)Lua标准库与文件


接上一篇 (三)Metatables和面向对象




10、Lua常用标准库




       1)math库



luaL_dofile 中文路径 lua文件在哪找_lua


2)string库


luaL_dofile 中文路径 lua文件在哪找_加载_02




结果:

luaL_dofile 中文路径 lua文件在哪找_加载_03




        3) os库(clock, date, time )




luaL_dofile 中文路径 lua文件在哪找_luaL_dofile 中文路径_04


luaL_dofile 中文路径 lua文件在哪找_lua_05


luaL_dofile 中文路径 lua文件在哪找_Lua_06




结果:

luaL_dofile 中文路径 lua文件在哪找_luaL_dofile 中文路径_07

luaL_dofile 中文路径 lua文件在哪找_luaL_dofile 中文路径_08




luaL_dofile 中文路径 lua文件在哪找_加载_09

结果:

luaL_dofile 中文路径 lua文件在哪找_luaL_dofile 中文路径_10




     4) io库


luaL_dofile 中文路径 lua文件在哪找_Lua_11





luaL_dofile 中文路径 lua文件在哪找_lua_12

luaL_dofile 中文路径 lua文件在哪找_Lua_13

luaL_dofile 中文路径 lua文件在哪找_Lua_14




11、文件的加载与运行




       当我们需要加载与运行已有文件中的Lua代码时,可以用以下几种方式: 


(1) loadstring( str )  --- 加载字串


luaL_dofile 中文路径 lua文件在哪找_加载_15


loadstring()本是函数,由于参数是string,所以没有加括号。loadstring()执行完之后,


只是加载解析, 并没有执行。返回的是一个function类型。执行该函数便可以运行。相当于:


luaL_dofile 中文路径 lua文件在哪找_加载_16


        (2) loadfile( file_name ) --- 加载文件


        这个函数相当于从文件里读出string,然后再调用loadstring(file_text)实现加载功能。


        (3) dofile( file_name )  --- 加载并执行文件

   相当于loadfile()之后,返回一个函数,再调用这个函数。




luaL_dofile 中文路径 lua文件在哪找_Lua_17



        (4) require( file_name ) 


          这个函数是通过调用dofile()来实现的。不同的是,每次加载执行一个文件时,

require()都会记录,避免重复加载。另外,如果给定的路径找不到文件,require()会到

指定的路径下去找寻到要加载的文件。文件名称可以省去.lua后缀。

  我们可以直接使用require(“model_name”)来载入别的lua文件,载入的时候就直接

执行那个文件了。比如,我们有一个hello.lua的文件:

   


luaL_dofile 中文路径 lua文件在哪找_加载_18


如果我们:require(“hello”),那么就直接输出Hello, World!了。

  注意:
  1)require函数,载入同样的lua文件时,只有第一次的时候会去执行,后面的相同的都不执行了。
  2)如果你要让每一次文件都会执行的话,你可以使用dofile(“hello”)函数
  3)如果你要玩载入后不执行,等你需要的时候执行时,你可以使用 loadfile()函数,如下所示:


luaL_dofile 中文路径 lua文件在哪找_Lua_19

      


          loadfile(“hello”)后,文件并不执行,我们把文件赋给一个变量hello,

当hello()时,才真的执行。当然,更为标准的玩法如下所示。

假设我们有一个文件叫mymod.lua,内容如下:

     文件名:mymod.lua


luaL_dofile 中文路径 lua文件在哪找_Lua_20


于是我们可以这样使用:


luaL_dofile 中文路径 lua文件在哪找_luaL_dofile 中文路径_21


       其实,require干的事就如下:(所以你知道为什么我们的模块文件要写成那样了)

luaL_dofile 中文路径 lua文件在哪找_lua_22


参考:  
如果你还比较喜欢Lua的话,下面是几个在线文章你可以继续学习之:

Lua官网

book.luaer.cn

               由于本人对Lua面向对象等的使用和理解还不深刻,这里参考了博文 酷 壳 – CoolShell.cn,

  和 Lua学习总结 这里感谢这两位位博主! 由于对于Lua与C/C++的交互部分也不熟悉,因此这里

        就不作过多陈述了。