1

12 つの値が同じキーを持つという事実のみに基づいて乗算する関数を作成する方法はありますか? ここに私が考えているもののいくつかの疑似コードがあります:

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.name の代わりに t[k] 表記を使用してテーブルにアクセスできます。また、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 に答える