首页
学习
活动
专区
工具
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栈的话调用LuaC 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.5K20

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.2K20

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

Lua函数使用

对于这个规则,唯一例外就是,当函数只有一个参数且该参数是字符串常量或表构造器时: print "Hello World" print("Hello World") dofile "a.lua...形如x:foo(x)表达式意味为调用对象ofoo方法。 一个Lua程序既可以调用Lua语言编写函数,也可以调用C语言编写函数。...多返回值 Lua语言中一种与众不同但又非常有用特性是允许一个函数返回多个结果。Lua语言中几个预定义函数就会返回多个值。我们已经接触过函数string.find,该函数用于在字符串中定位模式。...当找到了对应模式时,该函数会返回两个索引值:所匹配模式在字符串中初始字符和结尾字符索引。..."x") -- ax 当在表达式中调用foo2时,Lua语言会把其返回值个数调整为1.因此,在上例最后一行,只有第一个返回值”a”参与了字符串连接操作。

1.6K20

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

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

5K30

Lua函数式编程

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

1.1K20

LuaOS库时间函数

例如: 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时间表示时间。

8.2K30

【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文件打开时产生,关闭则销毁 局部名称空间 作用:用来储存函数体代码内变量名内存空间

10810

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

我们知道一个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.2K30

奇怪函数调用

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

1.7K30

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

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

5110

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

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

2.6K10

栈上理解 Go语言函数调用

0x000f 00015 (main.go:3) SUBQ $32, SP 在执行栈上调用时候由于栈是内存地址高位向低位增长,所以会根据当前栈帧大小调用SUBQ $32...综上在函数调用中,关于参数传递我们可以知道两个信息: 参数完全通过栈传递 参数列表右至左压栈 下面是调用 add 函数之前调用调用详情: [call stack] 当我们准备好函数入参之后...小结以下栈调用规则: 参数完全通过栈传递 参数列表右至左压栈 返回值通过栈传递,返回值栈空间在参数之前 函数调用完毕后,调用方(caller)会负责栈清理工作 结构体方法:值接收者与指针接收者...其实这段汇编和其他函数调用汇编是一样,没啥好讲,在调用 test 函数之前就是做了一些栈初始化工作。...总结 这篇文章中,首先和大家分享了函数调用过程是怎样,包括参数传递、参数压栈顺序、函数返回值传递。然后分析了结构体方法传递之间区别以及闭包函数调用是怎样

2K30

oracle函数调用应使用execute命令_matlab函数调用

大家好,又见面了,我是你们朋友全栈君。 之前一直使用MySQL数据库,第一次接触Oracle就用到了函数和存储过程,今天跟大家分享一下使用过程....调用Oracle函数,返回游标. controller层没什么内容,我们直接从实现类说起:new 一个map,将函数入参,put进这个map中, 然后将这个map传进去mapper ,最后从这个map...中根据游标名,取出数据,强转成list 就可以了 图片 在mapper层 大概就是这样了.存储过程调用也是类似的 版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

2.1K10
领券