1有没有办法写一个函数来加倍两个值,只基于它们具有相同的键的事实?这是我想到的一些psudocode:
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”。
答案 0 :(得分:2)
您可以使用pairs
函数迭代表,以便检查它可用的键。此外,如果k是“name”字符串,并且lua表返回nil
,如果您访问它没有的密钥,则可以使用t [k]表示法而不是t.name访问表。
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