有没有检查表是否包含值的方法?我有自己的(幼稚)功能,但我想知道是否存在"正式"的东西?或者更高效的东西......
function table.contains(table, element)
for _, value in pairs(table) do
if value == element then
return true
end
end
return false
end
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我使用这个函数的主要原因是使用表作为集合,即没有重复的元素.还有其他我可以使用的东西吗?
我有一个lua表,我用作hashmap,即使用字符串键:
local map = { foo = 1, bar = 2 }
Run Code Online (Sandbox Code Playgroud)
我想"弹出"由其键标识的该表的元素.有一种table.remove()方法,但它只需要删除元素的索引(即数字)而不是通用键.我希望能够做到table.remove(map, 'foo'),这就是我实现它的方式:
function table.removekey(table, key)
local element = table[key]
table[key] = nil
return element
end
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
我在Lua中有一个字符串,想要在其中迭代单个字符.但是没有我尝试过的代码和官方手册只显示如何查找和替换子串:(
str = "abcd"
for char in str do -- error
print( char )
end
for i = 1, str:len() do
print( str[ i ] ) -- nil
end
Run Code Online (Sandbox Code Playgroud) 在Lua wiki中,我找到了一种为缺少参数定义默认值的方法:
function myfunction(a,b,c)
b = b or 7
c = c or 5
print (a,b,c)
end
Run Code Online (Sandbox Code Playgroud)
这是唯一的方法吗?PHP风格myfunction (a,b=7,c=5)似乎不起作用.并不是Lua方式不起作用,我只是想知道这是否是唯一的方法.
我的任务是如何进行for循环.我已经用数字来解决这个问题,但无法用名字来解决这个问题.我想创建一个运行在名称列表中的for循环.以下是我到目前为止:
names = {'John', 'Joe', 'Steve'}
for names = 1, 3 do
print (names)
end
Run Code Online (Sandbox Code Playgroud)
我尝试了一些其他的东西,但它只是不起作用,终端总是只列出1,2,3 ......我做错了什么?
我有一个游戏项目来重新实现Breakout.我想在一行上显示两个单词,每个单词.它们由砖块连接在一起.在里面,顶行是第一个名称,左对齐.底线是姓氏,右对齐.它们是从文本框输入的,如下所示呈现:

通过的每一秒,屏幕将向网格添加可配置数量的砖块(例如,每秒五块砖块),直到两个单词看起来完整.我显示了一个由矩阵(0,1)创建的字母表.
......但我不知道如何将它们合并为一个词.我该如何加入这些信件?
这是我到目前为止所得到的:
local Bricks = display.newGroup() -- static object
local Events = require("Events")
local Levels = require("Levels")
local sound = require("Sound")
local physics = require("physics")
local Sprites = require("Sprites")
local Func = require("Func")
local brickSpriteData =
{
{
name = "brick",
frames = {Sprites.brick}
},
{
name = "brick2",
frames = {Sprites.brick2}
},
{
name = "brick3",
frames = {Sprites.brick3}
},
}
-- animation table
local brickAnimations = {}
Sprites:CreateAnimationTable
{
spriteData = brickSpriteData, …Run Code Online (Sandbox Code Playgroud) 所以Lua似乎是在我的应用程序中实现安全"用户脚本"的理想选择.
但是,嵌入lua的大多数示例似乎都包括加载所有标准库,包括"io"和"package".
所以我可以从我的解释器中排除这些库,但即使是基本库也包含访问文件系统的函数"dofile"和"loadfile".
如何删除/阻止这些不安全的函数,而不仅仅是一个甚至没有像"ipairs"函数这样的基本内容的解释器?
无论如何在Lua使用内联条件?
如:
print("blah: " .. (a == true ? "blah" : "nahblah"))
Run Code Online (Sandbox Code Playgroud)