在Lua中,调用具有相同键的值。

有没有一种方法可以编写一个函数,仅基于它们具有相同键这一事实来乘两个值?以下是我心目中的一些伪代码:

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”不是真正的内容,它代替了函数参数与“operation”字典共有的任何内容。在本例中,将会是“a”,因此如果可能的话,函数将相乘“operator1.a”和“operation.a”。

点赞
用户90511
用户90511

你可以使用 pairs 函数遍历一个表,这样可以检查表中有哪些可用的键。此外,如果 k 是字符串 "name",则可以通过 t[k] 访问表而不是 t.name,如果访问一个表中不存在的键,则 Lua 表返回 nil

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-20 15:52:37