Lua——load和loadstring函数用法

121 篇文章 2 订阅
11 篇文章 0 订阅

目录

Lua环境实例说明

允许传参的形式load函数


位于如下包体封装好的load函数 (等同于直接在Lua环境执行的loadstring函数)


load(chunk, chunkname, mode, env)

Lua环境实例说明

a = 100
local content = [[
    return a
]]
local func = loadstring(content)
print(func())

等同于

a = 100
local func = function()
    return a     
end
print(func())

若报错bad argument #1 to 'loadstring' ... ,把loadstring改为load即可(同理,可能是load函数报错,则改为loadstring)  这可能是不同环境采用的lua库不同导致的,直接使用编辑器运行lua代码是使用loadstring函数,否则可能是load函数。报错如下:

lua.exe AA.lua
lua.exe: AA.lua:9: bad argument #1 to 'load' (function expected, got string)
stack traceback:
    [C]: in function 'load'
    AA.lua:9: in function 'AFunc'
    AA.lua:14: in main chunk
    [C]: ?

允许传参的形式load函数

local A = {}
function A:AFunc()
    local content = [[
        return function(self)
            return self.id > 100
        end
    ]]
    self.id = 1000
    local loadFunc = load(content) --load返回的是一个无参匿名方法
    local myFunc = loadFunc()      --执行load返回的方法,拿到content字符串里写的有参匿名方法
    local boolValue = myFunc(self) --执行有参匿名方法,传递self进去,返回boolean值(true)
    print(boolValue)
end
A:AFunc()

等同于

local A = {}
function A:AFunc()
    self.id = 1000
    local loadFunc = function()
        return function(self)
            return self.id > 100
        end
    end
    local myFunc = loadFunc()        
    local boolValue = myFunc(self)
    print(boolValue)
end
A:AFunc()

即 load(content) 等同于  function() content end   (目前我发现无法给这个function()传任何参数,但可以通过我上面的传参的例子进行实现)

  注意:content是一个[[]]包括的字符串,它里面的特殊字符是无效的,若content不写return是会报错的!

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
 本套课程分为基础与中级两部分,分别就lua语言的各方面知识点进行探讨,学习完本套课程,对于后续Xlua(Tolua等框架)技术的学习提供强大的语言技术保证。       本套lua课程采用入门与商业级两种开发IDE进行教学:入门级的SciTE内置IDE与商业级的IDEA lua插件。本套课程学习完毕,对于除了传统手游外,在VR、AR、商业级大型应用程序、嵌入式设备开发等领域都有较强的指导作用。           《lua中级篇》分为:“函数的进阶”、“字符串进阶”、“Table进阶”、“元表”、“OOP面向对象”、“协同程序”、“IO操作”、“调试与运行”等八个大的章节,详细深入讲解lua开发的方方面面。        内容包含lua可变参数、闭包、模块、函数尾调用、字符串模式匹配、字符串不变性原理、矩阵、链表、元表详解与应用、协同的生命周期与生产消费者问题、lua文件各种读写操作、lua执行外部代码与错误异常处理垃圾收集机制等。       最后,lua中级篇的学习,对于广大学员开发商业级lua热更新技术,具有不可替代的重要作用! 热更新系列(技术含量:中高级):B:《热更新框架设计之Xlua基础视频课程》https://edu.csdn.net/course/detail/27110C:《热更新框架设计之热更流程与热补丁技术》https://edu.csdn.net/course/detail/27118D:《热更新框架设计之客户端热更框架(上)》https://edu.csdn.net/course/detail/27132E:《热更新框架设计之客户端热更框架(中)》https://edu.csdn.net/course/detail/27135F:《热更新框架设计之客户端热更框架(下)》https://edu.csdn.net/course/detail/27136 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值