标签: lua-table

如何在Lua中擦除或重置表

我将如何在Lua中完全擦除或重置表格.我想最后把它变成一张空白表.

lua reset lua-table

3
推荐指数
1
解决办法
8450
查看次数

如何在lua中迭代表中的元素对

如何迭代lua中的表元素对?我想实现一种无副作用的循环和非循环迭代ver对.

I have table like this:
t = {1,2,3,4}

Desired output of non-circular iteration:
(1,2)
(2,3)
(3,4)

Desired output of circular iteration:
(1,2)
(2,3)
(3,4)
(4,1)
Run Code Online (Sandbox Code Playgroud)

lua loops lua-table

3
推荐指数
1
解决办法
354
查看次数

表插入给出零错误

我的 lua 代码中有以下函数。我收到错误Attempt to call field 'insert' (a nil value)

我在上面有主要块

local cardDeck;
local suits = {"h","d","c","s"};
Run Code Online (Sandbox Code Playgroud)

然后在函数中

function createDeck()
    cardDeck = {};
    for i=1, 4 do
        for j=1, 13 do
            local tempCard = suits[i]..j;--PRINT SHOW VALID VALUE HERE i.e. "h1","d2" etc
                table.insert(cardDeck,tempCard); --THIS LINE IS ERROR
        end
    end
end
Run Code Online (Sandbox Code Playgroud)

lua lua-table

3
推荐指数
1
解决办法
7215
查看次数

哈希交叉可能与redis + lua?

我有一个用例,我需要计算很多集之间的相似性来创建一个简单的推荐引擎.我正在研究Jaccard系数和其他相似系数公式,但有一点在它们之间很常见:集合中的项目不能重复(如果我在这里错了,请纠正我).

我在PHP中编写了自己的函数来执行自定义哈希交集,其逻辑是:

  1. arr1:一个数组,其中键是项的ID,值是它们对应的数量.这代表用户的愿望清单.
  2. arr2:是相同的,arr1但它代表另一个用户的库存.
  3. 我需要这个自定义交集的逻辑是,愿望清单的所有者不关心卖家是否有100个item1.如果他只想要4个,那么只计算4个.

我需要一种非常快速的方式来交集集合,但是通常的相似系数公式涉及集合的交叉和并集,当比较一组与200k其他集合时,这可能没有我想要的那么快.这是我到目前为止的地方:

function my_similarity_coefficient ($arr1, $arr2) {

    $matches = 0;
    $total = 0;

    if (count($arr2) == 0)
        return 0;

    foreach ($arr1 as $id => $qty) {

        $total += $qty;

        if (!array_key_exists($id, $arr2))
            continue;

        $matches += min($qty, $arr2[$id]); // do not match more than what user wants

    }

    return $matches / $total;

}
Run Code Online (Sandbox Code Playgroud)

我尝试在PHP中交叉两个带红色的哈希.在尺寸arr1[67]arr2[231]分别.系数在未完成的61.98μsec(最差时高达266.075μsec)下计算.如果我试图从Redis获取数据到PHP,这个数字可以达到905.037μsec-3337.86μsec.

我想保持瓶颈不会将数据从redis传输到PHP,所以我想知道是否可以在lua(或者甚至是c ++)中编写这个自定义交集,如果可能的话,它是否会受到同样的影响瓶颈,因为它也从pointA到pointB获取它,或者它不会受到获取瓶颈,因为数据已经是本地的?

我不熟悉lua,但我不打算用精确的代码填充勺子.由于互联网上的lua资源与我实际想要实现的内容相关很少,我想在我搜索时首先选择一些大脑.

lua redis lua-table

3
推荐指数
1
解决办法
1456
查看次数

在 Lua 中通过引用删除变量

我在几个表中得到了几个对象。多个功能更改对象并将其移交给其他功能。

假设我的表是这样的:

objectTable = {obj1, obj2, obj3}
otherobjTable = {objA, objB, objC, objD}
Run Code Online (Sandbox Code Playgroud)

假设这些是在 main.lua 中初始化的。

现在,当跟踪 obj1 时,它被一个函数改变,该函数改变它并提供对另一个函数的引用,另一个函数又改变它。一个步骤可能如下所示:

function()
   if something then func(obj_1)
   elseif something else then func(obj_2)
   elseif something other then func(obj_3)
   //... and so on...
end

function func(received_Object)
  if something then
    table.insert(received_Object, a value)
  end
  callAnotherFunction(received_Object)
end

function callAnotherFunction(received_Object)
  if input == "Delete it" then
    local name = received_Object.name
    received_Object = nil
    return string.format("%s was deleten", name)
  else
    return false
  end
end
Run Code Online (Sandbox Code Playgroud)

现在的问题是,在received_Object = nil 之后 …

memory lua reference lua-table

3
推荐指数
1
解决办法
7824
查看次数

`_call`在我的Lua代码中不起作用

我认为一个简单的虚拟示例文件解释的不仅仅是长词

t = {}
t.__call = print
t.__call(1)
t(2)
Run Code Online (Sandbox Code Playgroud)

根据该文件,因为t是一张桌子,一个电话t,想t(2),应该被重定向到一个呼叫t.__call,像t.__call(2). t.__call工作正常,没问题,但"语法糖"没有.以下是上述代码的输出:

1
lua: test.lua:4: attempt to call global 't' (a table value)
stack traceback:
        test.lua:4: in main chunk
        [C]: in ?
Run Code Online (Sandbox Code Playgroud)

我错过了什么?为什么不t(2)转换成t.__call(2)

lua lua-table

3
推荐指数
1
解决办法
338
查看次数

计算 Lua 表中某个值出现的次数

基本上我想做的是转换这种格式的表格

result={{id="abcd",dmg=1},{id="abcd",dmg=1},{id="abcd",dmg=1}}
Run Code Online (Sandbox Code Playgroud)

到这种格式的表:

result={{id="abcd",dmg=1, qty=3}}
Run Code Online (Sandbox Code Playgroud)

所以我需要知道{id="abcd",dmg=1}表中发生了多少次。有没有人知道比嵌套for循环更好的方法?

lua count lua-table

3
推荐指数
1
解决办法
1014
查看次数

在lua中,数组子元素

在 Lua 中,我想选择数组的部分。下面的示例从第二个元素中选择

a = { 1, 2, 3}
print(a)

b = {}
for i = 2, table.getn(a) do
  table.insert(b, a[i])
end
print(b)
Run Code Online (Sandbox Code Playgroud)

在 python 中 a[1:] 工作。Lua 有类似的语法吗?

arrays lua lua-table

3
推荐指数
1
解决办法
2054
查看次数

Lua - 理解setmetatable

我正在尝试构建一个CNN使用Torch 7. 我很新Lua。我试图点击此链接。我遇到了setmetatable以下代码块中调用的内容:

setmetatable(train_set, 
{
  __index = function(t, i) 
    return {t.data[i], t.label[i]}
  end
});
Run Code Online (Sandbox Code Playgroud)

我知道第二个参数充当 table 的元表train_set

1)是t元表还是t只是另一个名称train_set

2)每当一个函数用于反对 时__index,解释器是否假设第一个参数(t)是一个表(或元表,取决于第一个问题的答案)?第二个参数总是 orkeyindex

3)我的理解是,如果我使用train_set.data[1],它将调用__index. 这里的答案是当表中不存在__index时调用。key但与t.data[1]相同train_set.data[1]?如果是这样,口译员怎么知道这一点?

lua metatable lua-table torch

3
推荐指数
1
解决办法
5241
查看次数

从 Lua 表中删除特定条目

我正在插入这样的表格

Admin = {}

table.insert(Admins, {id = playerId, Count = 0})
Run Code Online (Sandbox Code Playgroud)

这很好用。

我现在如何从该表中删除该特定管理员?

以下不起作用,我确定这是因为 ID 存储在表内的数组中,但是我将如何访问它呢?

table.remove(Admins, playerId)
Run Code Online (Sandbox Code Playgroud)

基本上,我想从表 Admins 中删除我输入的 ID == playerId。

lua lua-table

3
推荐指数
1
解决办法
6458
查看次数

标签 统计

lua ×10

lua-table ×10

arrays ×1

count ×1

loops ×1

memory ×1

metatable ×1

redis ×1

reference ×1

reset ×1

torch ×1