
load (chunk [, chunkname [, mode [, env]]])
这个函数在5.2以前lua版本里写作“loadstring”,5.2以后loadstring被移除,写作load。该函数包括四个参数,其中第一个参数是必须的:
chunk:一个块,它既可以是一个字符串也可以是二进制,(关于二进制码这些问题我发完这篇笔记以后再单独开一篇笔记来讲(shui),这一篇笔记只做简要介绍);
下面三个参数可以省略:
chunkname: 模块名,默认是"chunk";
mode:控制load函数以什么形式加载块:”b”二进制,”t”文本形式,”bt”兼容两种形式,不填默认是bt;
env:环境变量,不填默认就是用全局变量_ENV或_G填充(这个也开个坑吧,以后再来单独开贴讲这个全局变量的用法);
这个函数会返回两个结果:func, err
func:如果load函数执行成功,函数会返回一个可执行函数,如果执行失败,则返回nil(空值);
err:错误或nil;
通常情况下,load(loadstring)被用来加载一个文本形式的代码:

下面对上图代码做一些解释:
4、5行首先定义了文本a、b,其中a是全局变量,b是局部变量。
第7~13行定义代码文本code。
第15行将code传入loadstring中得到编译并返回值到func1与err1;
第16~20行检查func1非空值后,运行func1函数后如图在控制台输出文本a——这证明了loadstring编译文本时无法读取局部变量,但可以读取全局变量。
第22~27行继续运行loadstring,但是传入一个无法编译的文本”123;”,我们可以看到在控制台输出了err2的内容:[string "123;"]:1: unexpected symbol near '123'。
以上便是load(loadstring)的基本用法。