`

lua通过loadstring实现eval和lambdal表达式

lua 
阅读更多
function eval(str)
    if type(str) == "string" then
        return loadstring("return " .. str)()
    elseif type(str) == "number" then
        return loadstring("return " .. tostring(str))()
    else
        error("is not a string")
    end
end

function lambda(lambda_string,...)
--验证是否仅存在一个:号
    pos = string.find(lambda_string,":")
    if pos ~= nil then
        if string.find(lambda_string,":",pos+1)~= nil then
            error('more than one ":"')
         end
    end
    if type(lambda_string) ~= "string" then
        error("is not a string")
    end
    --lambda x:x+x 将其分割为 参数 x 和 表达式 x+x 的形式
    parameter = string.sub(lambda_string,1,pos-1)
    expression = string.sub(lambda_string,pos+1,-1)

    fun = string.format("return function(%s) return %s end",parameter,expression)
    local func = loadstring(fun)()(...)
return func
end
分享到:
评论

相关推荐

    utf8.lua:pure-lua 5.3正则表达式库

    这就是`utf8.lua`的用武之地——它是一个专门为Lua 5.3设计的纯Lua实现的正则表达式库。 `utf8.lua`的核心特性在于其纯Lua实现,这意味着它无需依赖任何外部C模块,可以在任何支持Lua 5.3的环境中运行,包括轻量级...

    Lua loadstring函数用法实例

    Lua loadstring函数是Lua语言中一个非常重要的特性,它允许我们动态地加载并执行字符串形式的Lua代码。...在理解其工作原理和潜在风险后,`loadstring`可以成为实现复杂逻辑和强大功能的有效工具。

    基于 Lua 的微控制器 正则表达式解析器_C++_代码_相关文件_下载

    通过这个解析器,开发者可以在 Lua 脚本中编写正则表达式,利用微控制器的有限资源执行复杂的文本处理任务。这对于嵌入式系统的自动化和数据处理非常有用,例如在物联网设备、智能家居系统或游戏中的脚本逻辑中。...

    《自己动手实现Lua:虚拟机、编译器和标准库》_张秀宏_2018-9-27.rar

    作者融合自己丰富的工程实践经验,详细阐述Lua语言的核心语法和实现原理,深入探讨Lua虚拟机、编译器和标准库,并给出了实际可以编译执行的代码。助你从零基础开始编程实现Lua语言,理解脚本语言工作原理。全书分为3...

    Nginx+lua通过url传参的方式实现动态代理

    ### Nginx+Lua通过URL传参方式实现动态代理 #### 概述 在现代Web应用开发中,灵活地管理后端服务之间的通信是至关重要的。动态代理技术为这一需求提供了解决方案,使得前端可以方便地根据业务逻辑将请求转发至不同...

    Lua实现特殊字符过滤.lua

    Lua语言实现特殊字符过滤,对于使用Lua开发移动端游戏的童鞋非常常用。代码亲测有效,附使用实例

    一个小巧的lua解释器实现

    《小巧的Lua解释器实现全解析》 Lua是一种轻量级的脚本语言,因其简洁、高效和可扩展性而...通过深入研究`Console1.cpp`和`bookconsole1.exe`,我们可以更深入地了解Lua的语法规则、数据结构以及解释器的设计和实现。

    lua 5.0 设计实现

    《Lua 5.0 设计实现》是一本...通过阅读这本书,你不仅可以学习到Lua的实际编程技巧,还能了解到一种优秀脚本语言的设计哲学和实现原理。对于任何对Lua感兴趣或者在项目中使用Lua的人来说,这都是一次宝贵的学习机会。

    Lua_C 实现Lua与C API互调

    它提供了与C语言的紧密集成,允许开发者通过Lua_C接口实现lua和C代码的互调,以提高程序性能或者利用C库的能力。本文将深入探讨如何在Visual Studio 2008环境下,通过Lua_C接口实现Lua与C API的互调。 首先,要理解...

    lua面向对象实现

    在Lua中实现面向对象编程(OOP)虽然不像其他静态类型语言那样直接,但通过元表和元方法的概念,同样可以构建出具有类和对象的结构。 面向对象编程的基本概念包括类、对象、继承、封装和多态。在Lua中,这些概念的...

    lua教程--轻松学习lua

    此外,这个文档可能还会介绍如何使用Lua的元表和元方法来实现面向对象编程,以及如何使用全局环境和局部作用域。实例通常包括解决实际问题的脚本,这将帮助你理解Lua在实际项目中的应用。 在"lua与C的交互"这一标签...

    lua-zset, redis排序集相同的lua数据结构.zip

    在lua-zset的实现中,可能使用了 Lua 的表(table)数据结构作为基础,通过巧妙的设计实现了类似Redis zset的特性。表在Lua中既可以作为关联数组(key-value),也可以作为序列(array-like),这种灵活性为实现排序...

    Lua飞机大战源码

    总结,Lua飞机大战源码展示了Lua在游戏开发中的实际应用,通过理解源码,我们可以学习到如何用Lua进行游戏逻辑控制、对象管理、输入处理、图形和音频操作等。对于想要深入学习Lua或游戏开发的读者来说,这是一个很好...

    lua5.0的实现原理剖析

    《Lua 5.0 实现原理剖析》 ...总结而言,《Lua 5.0 实现原理剖析》是一篇深入探讨Lua 5.0技术特性的文章,涵盖了虚拟机设计、散列表优化、闭包实现和协程的引入等多个关键领域,为理解Lua语言提供了宝贵的知识资源。

    NGINX + LUA实现复杂的控制

    通过将 NGINX 与 LUA 结合,可以实现复杂的控制功能。在本文中,我们将介绍如何使用 NGINX + LUA 实现复杂的控制,包括安装 LUA 模块、使用 LUA 脚本实现访问限制、rewrite 跳转等功能。 一、安装 LUA 模块 要使用...

    lua与Android交互,基本实现

    总结,Lua与Android的交互是通过JNI和Lua引擎实现的,这为Android应用带来了更多的动态性和可扩展性。通过注册Java方法,Lua脚本可以直接调用Android的API,同时Android应用也能执行Lua脚本并获取其执行结果。合理...

    lua设计模式总结

    1、简单工厂模式lua实现 2、工厂方法模式lua实现 3、原型模式lua实现 4、建造者模式lua实现 5、单例模式lua实现 6、抽象工厂模式lua实现 结构型模式 1、装饰模式lua实现 2、代理模式lua实现 3、外观模式lua实现 4、...

    Lua 中实现类

    在Lua编程语言中,虽然原生不支持传统的类(class)和面向对象编程(OOP)概念,但可以通过模拟来实现。Lua的核心设计理念是简洁和轻量,因此它提供了元表(metatable)和函数作为其核心机制来实现类和对象的模拟。...

    使用Tengine+Lua+GraphicsMagick实现图片自动裁剪缩放

    在安装和配置完成后,我们可以使用Lua脚本控制GraphicsMagick对图片的处理,并通过Tengine实现图片的自动裁剪和缩放。 本解决方案的优点是: 1. 实现了图片的自动裁剪和缩放,适应不同的规格和比例尺寸 2. 降低了...

Global site tag (gtag.js) - Google Analytics