Lua语言学习之模块与包


一、Lua基本库中的代码加载函数

Lua基本库中有一些函数,能够在运行源码之前,先将源码预编译为一种中间形式,或者是

加载别的 lua 代码。

1. loadfile ( filename ) 

该函数会从一个文件加载 Lua 代码块,但它不会运行代码,只是编译代码,

然后将编译结果作为一个函数返回,当没有指定filename时装载标准输入(stdin)的内容

2.dofile (filename)
功能:打开并且执行一个lua块,当忽略参数filename时,将执行标准输入设备(stdin)的内容。

返回所有块的返回值。当发生错误时,dofile将错误反射给调用者。

4.load (func [, chunkname])
功能:装载一个块中的函数,每次调用func将返回一个连接前一结的字串,在块结尾处将返回nil
当没有发生错误时,将返回一个编译完成的块作为函数,否则返回nil加上错误信息,

此函数的环境为全局环境chunkname用于错误和调试信息。

5.loadstring (string [, chunkname])
功能:与load类似,但装载的内容是一个字串
如:assert(loadstring(str))()


二、require 函数

Lua提供了一个名为 require 的高层函数来加载模块,但这个函数只假设了关于模块的基本概念。

对于 require 而言,一个模块就是一段定义了一些值的代码。

要加载一个模块,只需简单地调用 require ”< 模块名 > “。该调用会返回一个由模块函数组成的 

table,并且还会定义一个包含该 table 的全局变量。然而,这些行为都是由模块完成的,而非 require。

所以,有些模块会选择返回其他值,或者具有其他的效果。


三、module 函数

编写一个模块时,可以直接用 module 函数来生成模块代码,相当于:

local modname = ...
local M = { }
_G[ modname ] = M
package.loaded[ modname ] = M
	...
setfenv( 1, M )

module( ... ) 就等价于上面的代码。


三、包:package, 就是一系列的模块














  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值