标签: lua-table

如何将Lua中的表传递给C++?

如何将Lua中未知长度的表传递给绑定的C++函数?

我希望能够像这样调用Lua函数:

call_C_Func({1,1,2,3,5,8,13,21})
Run Code Online (Sandbox Code Playgroud)

并将表格内容复制到一个数组(最好是STL矢量)?

c++ api lua lua-table

5
推荐指数
1
解决办法
3896
查看次数

在lua中按索引值比较两个索引表

我试图比较两个相等长度的表和一个函数,因为我不知道有任何其他方法这样做.但是,使用以下功能,它无法注册,我也不知道为什么.我希望有人可以提供对此问题的深入了解,或者有更好的方法来比较这两个表.

这些表格使用以下代码填充:

str = "parameters determined by program (all digits)"
tableone = {}
for word in str:gmatch("%d") do table.insert(tableone,word) end
Run Code Online (Sandbox Code Playgroud)

两个表都是相同的,当然除了各个表名.表格正确填充,并在打印时正确显示.为了这个问题,这里有两个表:

tableone = {}
tabletwo = {}
for i=1,4 do table.insert(tableone, i) end
for i=1,4 do table.insert(tabletwo, i) end
Run Code Online (Sandbox Code Playgroud)

显然,这两个表将彼此相等.我写的比较索引表的函数如下:

function comparetables(t1, t2)
matchct = 0
 for i=1,#t1 do
    if t1[i] == t2[i] then
    matchct = matchct + 1
    end
if matchct == #t1 then
return true
end
end
Run Code Online (Sandbox Code Playgroud)

我试过了

print(comparetables(tableone,tabletwo))
Run Code Online (Sandbox Code Playgroud)

看它是否打印"真实"但没有运气.对我而言,它似乎应该没有问题.但事实并非如此.我错过了什么?我已经尝试过像某个人可能已经编写的table.compare函数一样的东西,但找不到这样的运气.谢谢你的任何建议!

附加信息:

我正在比较表格的原因是为了一个主人型游戏.这意味着在比较表时必须遵循以下三条规则.我创建的功能是让我开始,以为我可以从那里工作.

  1. 比较表时,如果数字匹配,则Ccount增加1.
  2. 比较表时,如果值存在于不同的索引位置,则将Pcount增加1

例如,使用值{1,3,3,4}的值表和{4,4,3,1}的猜测,它将返回Pcount为2(一个4和1)和一个Ccount为1 (三位在第三位).我认为最困难的部分之一就是要进行比较,以确认猜测中的第二个4不应该增加Pcount.

lua compare lua-table

5
推荐指数
2
解决办法
7049
查看次数

`table.insert`如何在Lua中使用自定义表

我想知道table.insert在lua中是如何工作的?!

我问这个是因为我试图在__newindexmetamethod 的自定义表上使用它但似乎没有调用它.有没有办法让我的自定义表功能与table.insert一起使用?!

从我对语言的谦虚知识,我会说它使用类似的rawset东西,或许我不知道.

我工作的样本:

do
    tabl = {1,2,3}
    local _tabl = tabl
    tabl = {}
    local mt = { __newindex = function(t,k,v) print"changing" ;_tabl[k] = v end, __index = _tabl}
    setmetatable(tabl,mt)
end

tabl[4] = 4;    --prints "changing"
table.insert(tabl,5) -- prints nothing!!
Run Code Online (Sandbox Code Playgroud)

lua lua-table

5
推荐指数
1
解决办法
759
查看次数

Lua将表格插入表格

基本表,应该如何。但是我需要按功能进行操作,我该怎么做?

local mainMenu = {
  caption = "Main Window",
  description = "test window",
  buttons = {
  { id = 1, value = "Info" },
  { id = 2, value = "Return" },
  { id = 3, value = "Ok" },
  { id = 4, value = "Cancel" }
  },
  popup = true
  }
Run Code Online (Sandbox Code Playgroud)

表应基于外部参数,并为每个选项变量编写一个表-更好的方法。我为此创建了一个函数,它们应该创建标题或描述之类的基本选项并弹出,然后将值插入按钮表(如果启用了选项-添加按钮)。但是这里的问题是,它们不会插入到tmp表,buttons表及其下一个选项的值中。

   function createMenu()
    tmp = {}
    --buttons insert
   if(config.info) then
    table.insert(tmp, {buttons = {id = 1, value = "Info"}});
   elseif(config.return) then
    table.insert(tmp, {buttons = {id = 2, …
Run Code Online (Sandbox Code Playgroud)

lua lua-table

5
推荐指数
1
解决办法
1万
查看次数

table.sort使用什么算法?

我很好奇Lua默认table.sort使用什么算法,只是因为它比我遇到的其他一些排序算法慢.如果Lua table.sort是用C语言编写的,或者它是在Lua的库中,我也很好奇.

sorting lua lua-table

5
推荐指数
1
解决办法
1559
查看次数

Lua内的枚举?

我有一个新问题,我想知道你是否能够在Lua内做enumartions,我不确定这是否是正确的名称,我能解释的最佳方式是如果我给你看一个例子使用PAWN(如果您知道C类型语言,那将是有意义的).

#define MAX_SPIDERS 1000

new spawnedSpiders;

enum _spiderData {
    spiderX,
    spiderY,
    bool:spiderDead
}

new SpiderData[MAX_SPIDERS][_spiderData];

stock SpawnSpider(x, y)
{
    spawnedSpiders++;
    new thisId = spawnedSpiders;
    SpiderData[thisId][spiderX] = x;
    SpiderData[thisId][spiderY] = y;
    SpiderData[thisId][spiderDead] = false;
    return thisId;
}
Run Code Online (Sandbox Code Playgroud)

这就是它在PAWN中的样子,但我不知道如何在Lua中这样做......这就是我到目前为止所做的.

local spawnedSpiders = {x, y, dead}
local spawnCount = 0

function spider.spawn(tilex, tiley)
    spawnCount = spawnCount + 1
    local thisId = spawnCount
    spawnedSpiders[thisId].x = tilex
    spawnedSpiders[thisId].y = tiley
    spawnedSpiders[thisId].dead = false
    return thisId
end
Run Code Online (Sandbox Code Playgroud)

但显然它会出错,你们中有谁知道这样做的正确方法吗?谢谢!

lua lua-table

5
推荐指数
1
解决办法
5595
查看次数

Lua Table Sorting 2比较

我已经在这里找到了尽可能多的答案,因为我可以找到我认为足够接近我的问题的标题.我没有看到任何人有我的确切问题,所以我问一个问题,我希望只是我对一个简单的事实一无所知.

我正在尝试编写一个记录HP(int)和距离(boolean)的表,然后按HP排序,只有顶部附近的Range中的那些.

local tableTest = {
    {hp = 64, range = true, name="Frank"},
    {hp = 100, range = true, name="Joe"},
    {hp = 2, range = false, name="Jim"},
    {hp = 76, range = true, name="Tim"},
    {hp = 17, range = false, name="Jill"},
    {hp = 16, range = true, name="Phillip"},
}

-- Sort by HP and Range to find lowest Unit in Range.
table.sort(tableTest, function(x,y) return x.hp < y.hp and x.range end)

for i=1, #tableTest do print(tableTest[i].name, tableTest[i].hp) end
Run Code Online (Sandbox Code Playgroud)

这个输出是:

Phillip 16 …
Run Code Online (Sandbox Code Playgroud)

sorting lua return lua-table

5
推荐指数
1
解决办法
197
查看次数

数组作为参数列表lua

今天,我正在与lua一起工作,使用那个“ oldesh”作为我的语言,并且确实找到了可以将参数作为数组获取的东西,例如soo:

function foo(someting,...)
    local arrayofargs = arg
    -- code here
end
Run Code Online (Sandbox Code Playgroud)

现在,我很吸引人。这可以通过“其他方式”吗?你可以传递数组,而不是数组,而是像参数列表一样传递:

function bar(a1,a2)
    print(a1+a1)
end

function foo(someting,...)
    local arrayofargs = arg
    bar(arg)
end
Run Code Online (Sandbox Code Playgroud)

是的,你不能那样做。但是我可以在家里做点东西吗?

lua arguments lua-table

5
推荐指数
1
解决办法
1389
查看次数

按字母顺序排序表,除了数字

我想按字母顺序排序表.除了数字.

下面的代码显示了如何使用比较器函数对表进行排序:

function( a,b ) return a.N < b.N end
Run Code Online (Sandbox Code Playgroud)

给我:

obj = {
    [1] = {
        ["N"] = "Green 1";
    };
    [2] = {
        ["N"] = "Green 11";
    };
    [3] = {
        ["N"] = "Green 2";
    };
    [4] = {
        ["N"] = "Red 1";
    };
}
Run Code Online (Sandbox Code Playgroud)

但是我希望它像这样排序:

obj = {
    [1] = {
        ["N"] = "Green 1";
    };
    [2] = {
        ["N"] = "Green 2";
    };
    [3] = {
        ["N"] = "Green 11";
    };
    [4] = {
        ["N"] = …
Run Code Online (Sandbox Code Playgroud)

sorting lua lua-table

5
推荐指数
2
解决办法
494
查看次数

lua中表键周围的方括号有什么作用?

我碰到了像这样的桌子,键周围有方括号。我知道使用lua不需要使用lua ..使用方括号时有什么区别吗?

        local commands_json =
        {
            ["request"] = {
                ["application"] = PW_APPLICATION,
                ["push_token"] = deviceToken,
                ["language"] = "en",  --OR: system.getPreference( "ui", "language" ),
                ["hwid"] = system.getInfo("deviceID"),
                ["timezone"] = -3600,  --offset in seconds
                ["device_type"] = deviceType
            }
        }
Run Code Online (Sandbox Code Playgroud)

lua coronasdk lua-table

5
推荐指数
1
解决办法
1077
查看次数

标签 统计

lua ×10

lua-table ×10

sorting ×3

api ×1

arguments ×1

c++ ×1

compare ×1

coronasdk ×1

return ×1