Lua每个字符串的函数名称
2019-6-25 18:7:46
收藏:0
阅读:83
评论:3
所以我正在尝试为每个fx对添加一个函数,我尝试了我能想到的一切,我寻找了很长时间的方法
我尝试了 lua _G[tes](arg1, arg2) 有人说应该可以做到,但我无法让它以那种方式工作,我尝试了 lua loadstring -/-
test = {
"jhon",
"bob",
"mike"
}
for nr, name in pairs(test) do
_G[name] = function ()
print("我是"..name)
end
end
local run = math.random(1,3)
for nr, name in pairs(test) do
if run == nr then
name()
end
end
点赞
用户4984564
当你有变量tes并定义了local function tes()时,它将覆盖变量tes。确切地说,它将遮盖它,但这在这里并没有什么区别。
你也不能临时声明局部变量,所以这是不可能的;然而,你可以声明全局变量,因为它们甚至不是真正的变量,而是一个被称为全局环境的键值对表。
在Lua 5.1及之前的版本中,可以通过_G值访问全局环境;在Lua 5.2及以上版本中,您也可以使用_ENV变量,但_G仍然适用于您的目的。
要添加新的“全局”变量,只需索引此表并向其中添加一个新的键值对:
for _, letter in ipairs {'a', 'b', 'c', 'd', 'e'} do
_G[letter] = function() print(letter) end
end
a() --> prints "a"
b() --> prints "b"
-- etc.
你必须记住的是:
local name = 'John'
local tab = {}
-- 这些都是等价的:
tab[name] = 'Doe' -- 获取name的实际内容,即'John'
tab['John'] = 'Doe'
tab.John = 'Doe'
-- 之后,tab看起来像这样:{John = 'Doe'}
-- (与{['John'] = 'doe'}相同)
-- 但是这个不同:
tab.name = 'Doe'
-- 之后,tab看起来像这样:{name = 'Doe'}
-- (与{['name'] = 'Doe'}相同)
所以如果你有一个包含字符串的变量tes,你必须这样做:
_G[tes] = function()
-- Do stuff with tes
end
2019-06-25 17:20:23
用户11698140
test = {
"jhon",
"bob",
"mike",
"ELF0001"
}
local run = 4
------------------------------------
-- 创建函数,不同的函数输出不同的结果
for nr, name in pairs(test) do
_G[name .. "r"] = function ()
print("I'm Not "..name)
end
end
for nr, name in pairs(test) do
_G[name .. "a"] = function ()
print("I'm "..name)
end
end
-----------------------------------
-- 根据 run 变量的值执行不同的函数
for nr, name in pairs(test) do
if run ~= nr then
_G[name .. "r"]()
end
end
for nr, name in pairs(test) do
if run == nr then
_G[name .. "a"]()
end
end
通过这段代码,创建了两组不同的函数,分别输出 "I'm Not " 和 "I'm ",并且根据变量 run 的值分别执行对应的函数。
2019-06-26 01:05:15
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

test = { "jhon", "bob" } for nr, name in pairs(test) do _G[name] = function () print("I'm "..name) end end jhon() --> I'm jhontest = { "jhon", "bob" } for nr, name in pairs(test) do _G[name] = function () print("我是"..name) end end jhon() --> 我是jhon