1

1有没有办法编写一个函数来仅基于它们具有相同键的事实来将两个值相乘?这是我想到的一些伪代码:

operation = {a=12, b=7, c=31}
operator1 = {a=0.5}
operator2 = {a=0.7}
operator3 = {b=0.3}

function Operate(x)
  return x.common_key * operation.common_key
end

print (Operate (operator1)) 
print (Operate (operator3))

--->   6
--->   2.1

这段代码当然不起作用,因为“common_key”不是真实的东西。它是函数参数与“操作”字典的任何共同点的替代。在这种情况下,它将是“a”,因此如果可以,该函数会将“operator1.a”和“operation.a”相乘。

4

1 回答 1

2

您可以使用该pairs函数遍历表,从而检查它有哪些可用的键。此外,如果 k 是“名称”字符串,您可以使用 t[k] 表示法而不是 t.name 访问表,nil如果您访问它没有的键,则 lua 表会返回。

function find_common_keys(t1, t2)
    for k,v1 in pairs(t1) do
       local v2 = t2[k]
       if v2 ~= nil then
          print("Found match", k, v1, v2)
       end
    end
end
于 2013-05-20T15:52:37.927 回答