调用在Lua中具有公共密钥的值

时间:2013-05-20 15:19:15

标签: dictionary functional-programming lua

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”。

1 个答案:

答案 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