LUA:以前に設定された変数からテーブルを作成します
質問
私はウェブサイトから情報をマイニングしていますが、私がしなければならないことの1つは、ページが私に別の情報に与えてくれるものから情報を変更し、その2番目の情報を変数に変えることです。ただし、これを行う方法を理解することはできません。
以下の表を与えてください:
t = {big = "tall", little = "short", fat = "wide", skinny = "thin"}
...どうすればそうすることができますか:私がそうするとき:
adj = string.match(page,'Adjective: (%w+)')
...そしてそれは一致します big
, 、の価値を返すことができます tall
しかし、それをテーブルに変えますか?私は機能を使ってみましたが、うまくいきませんでした、そして私はのようなことをしたくありません t[adj]={}
サブテーブルを作りたくないからです t
.
顔をじっと見つめているように感じますが、空白を描いています。
説明のために編集:
私は自分が必要とする形容詞を取得する方法、または大きいものの価値を示す方法などを知っています。私が話しているのはこれを行う能力です:
- 見つかった形容詞に基づいて値を見つけます。この場合、
big
値が見つかりました、値はですtall
. - 見つかった値を取得します(この場合、もう一度、
tall
)そして、その値を独自のテーブルに変えます。それから私は上からテーブルを持っています、そして、呼ばれる新しいものが入力されていない新しいものがありますtall
. 。そうすれば、情報を入力した後、tall["somekeyvalue"]
それは今もう少し理にかなっていますか?
解決
グローバル変数に悩まされていない場合は、グローバル環境テーブルを使用できます。
(t [adj]による)価値を取得した後、次のようなテーブルを作成できます。
_G[t[adj]] = {}
その後、テーブルにアクセスできるようになります 高い どこにでも
他のヒント
形容詞と一致するとき、あなたはあなたのテーブルでそれを調べて、そこに持っているエイリアスを返したいと思うように聞こえます。
Luaでそれを行うには、使用します []
テーブルを調べるには:
t = {big = "tall", little = "short", fat = "wide", skinny = "thin"}
adj = string.match(page,'Adjective: (%w+)')
print(t[adj])
それが「形容詞:大きな」と一致する場合 page
, 、印刷します tall
. 。これは、あなたの望むことですか? 「それをテーブルに変える」ことについての部分は私に混乱しています。
LUAで動的変数を作成する方法がわからないので、作成した他のテーブルのコンテナとなるテーブルを作成することをお勧めします。追加する要素を含むテーブルになりましょう。
この例をご覧ください:
-- you have to initialize it
result = {}
result.tall = {}
result.little = {}
--insert the elements that can be another tables or not
table.insert (result.tall, 'enormous')
table.insert (result.little , {s = 'short'})
-- so you can access it later
for k,v in pairs(result.tall) do
print(k,v)
end