首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

lua从函数名称的字符串调用函数

作为一个云计算领域的专家,我可以告诉你,Lua 是一种轻量级的脚本语言,它可以很容易地从字符串中调用函数。以下是一个简单的示例,说明如何使用 Lua 从字符串中调用函数:

代码语言:lua
复制
function hello()
  print("Hello, World!")
end

local function_name = "hello"
_G[function_name]()

在这个示例中,我们定义了一个名为 hello 的函数,然后将其名称存储在 function_name 变量中。接下来,我们使用 _G 全局变量表从字符串中调用函数。_G 是一个包含所有全局变量的表,因此我们可以使用 _G[function_name]() 来调用名为 function_name 的函数。

需要注意的是,在实际应用中,直接调用字符串中的函数可能会导致安全问题,因此应该谨慎使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

lua调用C函数

Lua采取的是利用栈进行交互,利用各种Lua_pushXXX将不同的值压入栈中,然后调用Lua脚本时自然会退栈取出参数运行,对于Lua的虚拟机来说,就像是发生了一次正常的函数调用。...(这里采用的栈是Lua栈,因为若是C栈的话调用Lua的C API就会出错了。)...typedef int (*lua_CFunction) (lua_State *L); 能够被Lua调用的C函数都必须是这种规则。函数的返回的int值表示C函数返回值的个数。...f) (lua_pushcfunction(L, f), lua_setglobal(L, n)) 注册C函数为一个全局变量; 示例代码 C代码 首先接受一个Lua虚拟机变量L,然后从L里取出相应的参数...require("power") print(square(1.44)) 参考 从lua调用C函数 Lua初学者(四)–Lua调用原理展示(lua的堆栈) Lua中调用C函数

2.8K31

C语言调用Lua函数

期待让你眼前一亮的信息。结果往往是趁兴而去,败兴而回。屏幕上的信息永无止境界滚动着,是如此的热闹,仿佛每一个人都在狂欢,而我的内心却如此的空虚与孤独。 在lua API中。...调用一个函数的步骤非常easy: 1.压入你要调用的函数,使用lua_getglobal。 2.压入调用參数。 3.使用lua_pcall 4.从栈中弹出结果。...举例说明,如果你有这么一个lua函数: function f (x, y) return (x^2 * math.sin(y))/(1 – x) end 那么。...我们就能够定义个c函数来封装这个调用: /* call a function ‘f’ defined in Lua */ double f (double x, double y)..., -1); lua_pop(L, 1); return z; } lua_pcall在压入结果的之前,会将函数,和參数弹出,假设返回多个结果,第一个最先压入。

2.6K20
  • Lua函数的冒号调用和点调用

    lua冒号函数的定义和调用 冒号定义函数中的self指向函数所属表对象,即self是table类型,通过self表可以:访问挂载在该表下的所有冒号定义函数 如,有定义A={},A:b() A:c();...函数b,c都是冒号定义函数,在b,c函数内部self是地址指向A的表,在b函数中可以通过self:c()来调用c函数,同理在c函数中也可以通过self:b()来调用b函数 代码示例: local tb...function tb:test() self:func1() self:func2() end tb:test() --调用func1 --调用func2 lua点函数的定义和调用 总之lua...点定义的函数中self=nil,不像冒号定义函数那样可以self指向函数所属对象 点调用冒号定义函数 点调用冒号定义函数,第一个参数传递给self,调用无参时,self=nil local tb={name...--冒号调用点定义函数,调用者对象表传递给点定义函数的第一个参数 tb:func2("第一个参数","第二个参数")

    3.4K20

    Lua学习笔记:CC++中调用Lua函数示例

    我们甚至可以封装了C/C++的函数库供Lua模块化加载后再传递给需要的C/C++项目调用工欲善其事必先利其器首先要知道一点C/C++调用Lua里的函数是通过Lua提供的虚拟栈来完成参数的转移与获取的"Lua...调用Lua函数示例1.lua_pcall调用这是最常用的方法,用于直接调用Lua函数,并可以在发生错误时捕获错误信息。...通过使用引用,可以将 Lua 栈上的值存储到 Lua 注册表中。当需要多次调用同一个Lua函数时,可以使用 lua_ref 来保存对函数的引用,这样可以从全局变量中查找并调用。...yend3.dostring调用通过 lua_dostring 或者 luaL_dostring,可以直接在 Lua 虚拟机中执行一段字符串形式的 Lua 代码。...Lua调C++也一样:C/C++先编写自己的模块函数,然后注册函数到Lua解释器中,最后由Lua去调用这个模块的函数。参考文章Lua与C/C++交互——C/C++调用Lua脚本

    17420

    Lua学习笔记:在Lua中调用CC++函数示例

    前文须知Lua的VS安装参考此文:本文会通过一些示例展示如何用lua调用C/C++传递过来的函数,并辅以部分解释语句:Lua中调用C/C++函数简介:任何在Lua中注册的C函数必须有同样的原型,typedef...被注册的C函数接收一个单一的lua_State类型的参数,同时返回一个表示返回值个数的数字。而Lua利用一个虚拟的堆栈来给C传递值或从C获取值。...每当Lua调用C函数,都会获得一个新的堆栈,该堆栈初始包含所有的调用C函数所需要的参数值(Lua传给C函数的调用实参),并且C函数执行完毕后,会把返回值压入这个栈(Lua从中拿到C函数调用结果)。...(n))) * 所以等价于 * 向栈中压入一个函数至栈顶 * lua_pushcfunction(L, lua_TestFunc); * 将栈顶的名称元素设置名称为testFunc...(L);return 0;}通过从lua的栈里取出数据作为函数的参数使用在push数据到lua的栈里后,需要函数的返回值告诉lua有几个返回值Tips:正数索引是从栈底开始计数的,索引 1 表示栈底的第一个元素

    28220

    python-函数的对象、函数嵌套、名称

    函数的对象 python中一切皆对象 函数对象的四大功能 引用 def f1(): print('from f1') f1() #调用函数 print(f1) print('*'*50)...函数的嵌套调用 from math import pi def circle(r,action): if action == 'p': def perimeter():...局部名称空间 局部名称空间:用于存放函数调用期间函数体产生的名字。...def f1(): x = 1 def f2(): # f2就是局部名称空间 pass f2() 生命周期:在文件执行函数调用期间时生效,在函数执行结束后失效...加载顺序 (考试必考) 内置名称空间—>全局名称空间—>局部名称空间 查找顺序 (考试必考) 从当前名称空间开始查找,然后逐步往上,如果当前为局部,则顺序为局部—>全局—>内置 作用域 作用域:作用的区域

    2.3K20

    按规则解析字符串中的嵌套函数并实现函数调用

    按规则解析字符串中的嵌套函数并实现函数调用 需求 1、按照一定规则解析字符串中的函数表达式,并替换这些表达式。...这些函数表达式可能包含其它函数表达式,即支持函数嵌套 2、函数表达式格式:{ __函数名称() }、{__函数名称( 函数参数 )} 注意: 函数名称以_打头 函数参数之间使用 || 分隔 形如 $...( {__function2()} )} 函数参数如果是字符串,需要使用单引号、双引号引用 形如 { __function1( "str_value" || 123)} , 字符串替换规则:待替换的字符串...,仅包含一个函数表达式,不含其它字符,则该字符串被替换为函数返回值,如果还包含其它字符,或者包含多个函数,则该字符串替换函数表达式之前,会先转换函数返回值为字符串,然后替换这些函数表达式为转换后的函数返回值...,然后再替换字符串,直到找不到为止 2、解析替换后的字符串,获取“临时插件函数表达式”,然后执行调用该函数 3、函数参数类型分析 字符串参数要求用 单、双引号 引用,通过eval(参数)转换,如果转换成功则用转换后的

    5K30

    Lua中的函数式编程

    以往写Lua代码时,我一直以为Lua是“原型对象”编程范式,然而这个“大跟头”让我发现,原来Lua的底层基石竟然是“函数式编程”范式(非纯函数式编程语言,Lua中的函数有副作用)。...却从来没在意过,整个编程范式中,数据的生命周期是以何种方式被管理着,以及数据在以何种方式进行转换和通信。 借着这个Bug的契机,我从数据的视角来重新审视了一下这些话,有了一些意想不到的发现。...这次终于打破了以往的范式惯性(上次学Lua时,我也是自信满满的认为我懂了函数式编程,结果摔了个大跟头)。 先来大致看看面向对象的哲学。...:"如果一个语言支持将函数作为参数传入其他函数,将其作为值从其他函数中返回,并且将它们向变量赋值或将他们存储在数据结构中,就在这门语言中,函数是一等公民。...自身的GC机制会保证,在函数(闭包)没有被回收前,其携带的环境变量永远有效。 在Lua的require和chunk的机制中我摔的跟头充分验证了这一点。

    1.2K20

    Lua的OS库时间函数

    例如: d = 1131286477 这里的 1131286477 是一个以秒为单位的 格林威志时间(gmt),注意不同时区的时差 用字符串表示时间 (string) 用字符串来来表示时间。...通过os.date函数的第二个参数指定一个时间数值。...时间数值与字符串之间的转换 请参考:string.time string.ftime 函数用法 计算时间值间隔 int = os.difftime(t2,t1); t2,t1都是数值格式的时间值,...表示从系统启动到当前时刻所过去的毫秒数。 int = os.clock() 读取系统时钟,以秒为单位。表示从系统启动到当前时刻所过去的秒数。...调用了 #define l_gmtime(t,r) gmtime_r(t,r) gmtime_r 函数是标准的POSIX函数,它是线程安全的,将日历时间转换为用UTC时间表示的时间。

    9.3K30

    【Python基础之函数:函数的介绍及名称空间 】

    Python基础之函数:函数的介绍及名称空间 一、函数 1、什么是函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。 作用: ​ 函数能提高应用的模块性,和代码的重复利用率。...1.函数在定义阶段只检测语法,不执行代码 def func(): pass 2.函数在调用阶段才会执行函数体代码 func() 3.函数必须先定义,后调用 4.函数的调用使用:函数名()...func(a): print(a) 5、函数的返回值 1.什么是返回值 调用函数之后返回给调用者的结果 2.如何获取返回值 # 变量名 赋值符号 函数的调用 res = func() # 先调用函数...print(args, kw) 三、名称空间 1、名称空间的类型、作用及存活时间 内置名称空间 作用:用来储存python解释器内置方法名的空间 作用域:python解释器 存活周期:解释器开启则产生...,关闭则销毁 全局名称空间 作用:用来储存py文件内变量名的空间 作用域:单个py文件 存活周期:单个py文件打开时产生,关闭则销毁 局部名称空间 作用:用来储存函数体代码内变量名的内存空间

    13010

    匿名函数自调用_自己调用自己的函数叫

    我们知道一个HTML文件在被加载的时候是从根标签html依次往下的,在遇到link,script等标签引入的外部资源时,下载外部资源,并执行外部资源。...关于函数声明,它最重要的一个特征就是函数声明提升,意思是执行代码之前先读取函数声明。这意味着可以把函数声明放在调用它的语句之后。...例 sun(1,2); //3 function sum(x,y){ alert(x+y); } 而函数表达式在编译的时候不会被提前,如下调用函数将会报错 ss(1,2)...; //报错,函数未定义 var ss = function(x,y){ alert(x+y); }; 介绍了函数的定义以及JavaScript的编译规则,下面正式说一下匿名函数自调用...变形写法: (function(x,y){ alert(x+y); }(1,2)); //3(括号在里面) 匿名函数自调用的写法有很多,下面列举常见的几种写法 1、匿名函数前加 void void

    2.5K20

    c++函数调用,函数编写(写自己的函数)以及数组调用,传递

    对函数的要求有三点  函数的完整文件 输入参数的定义 函数声明加入头文件  1.函数的完整文件  #include using namespace cv;...,直白的理解为,加了后我在函数中对该变量修改后,会对我的主函数main中的对应变量进行修改。...这里还有一点编程技巧 我们通过函数调用的方式进行运算,有两种方式得到运算结果 ①设置函数的返回值,return ②将传入值的地址(即传入值自身)交给函数,函数对其进行运算相当于直接对传入值进行运算。 ...2.输入参数的定义  我们在main中调用其他函数时,我们的输入参数需要提前定义  main () { Mat frame;  int mytime = 10; int imageWidth = 1280...3.函数声明加入头文件  我们调用其他函数前必须先声明 将   void cameracapture(Mat &frame, int mytime, int imageWidth,int imageHeight

    2.3K30

    字符串函数&&内存函数(从零到一)【C语言】

    长度不受限制的字符串函数:strcpy,strcat,strcmp 长度受限制的字符串函数:strncpy,strncat,strncmp  strlen  strlen函数是库函数中我们最常使用的函数...计数器              3.递归 strcpy   strcpy函数用于将源字符串复制到目标字符串中,包括字符串的结束符'\0'。...它将指定长度的数据从源地址复制到目标地址,不考虑源地址和目标地址是否重叠。当源地址和目标地址有重叠时,使用memcpy函数可能导致不可预测的结果。...的指针大于sou+宽度时,不管是从后向前还是从前到后拷贝都可以。...总结:当dest的指针小于sou的指针的时候从前向后拷贝,dest的指针大于等于sou的指针的时候从后向前拷贝。

    7710

    奇怪的函数调用

    原因就是数组越界的赋值,代码如下: arr[7] = (int)Attack; 在 C 语言中,函数名的名称就是函数的首地址。...C 语言在调用函数时,根据函数的调用约定(C 语言的调用约定为 _cdcel)先将参数从右至左依次入栈,然后将返回地址压入栈中。...当函数返回时,通过 add esp 来收回栈空间,然后在执行 retn 指令时,会把栈中的保存的返回地址赋值给 EIP 寄存器,然后从返回地址继续执行代码。...的位置处保存着返回地址,也就是调用当前函数的函数的下一条指令。...从图中可以看到,在注释位置有一个“attack...”字符串的提示,从这点就可以看出,该段反汇编代码是 Attack() 函数了。 到此,整个程序的执行就说清楚了。

    1.7K30

    【Kotlin】函数类型 ( 函数类型 | 带参数名称的参数列表 | 可空函数类型 | 复杂函数类型 | 带接收者函数类型 | 函数类型别名 | 函数类型实例化 | 函数调用 )

    函数类型自动推断 IX . 带接收者的函数类型 与 不带接收者的函数类型 之间的转换 X . 函数类型变量调用 I ....带参数名的参数列表 ---- 1 . 函数类型参数名称 : 参数列表中可以只是参数类型 , 也可以加上参数的变量名称 , 参数名称可以用于说明参数的含义 , 增加函数类型的理解性 ; 2 ....有参数名称的函数类型 : 参数列表中每个元素都由 参数名称 : 参数类型 组成 , 多个列表元素使用逗号隔开 ; ( 参数名称1 : 参数类型1 , 参数名称2 : 参数类型2 , … 参数名称n :...与 不带接收者函数类型 转换代码示例 : // 字符串 "abc" 调用该函数 , 传入 2 参数 , 结果是 "abcabc" var fun1 : String.( Int ) -> String...直接调用该函数 , 将该变量名称当做函数名称来使用 ;

    2.8K10
    领券