2015-04-05 45 views
0
players={ 
      {uuid = "abc",name = "TheEisbaer"}, 
      {uuid= "def",name ="Eisbaer68"}, 
      {uuid= "ghj",name = "kevin"} 
      } 
    list={name = "TheEisbaer", name = "Eisbaer68"} 

print(list.name)它打印「Eisbaer68」。 如何讓它打印「TheEisbaer」?Lua表 - 你可以用它作爲一個數組與鍵?

-

你可以這樣做print(players[3].uuid)或如何將一個做到這一點?

+0

你的意思是你想要的名稱字段值對應於任何uuid字段值「abc」? – 2015-04-05 17:55:32

+0

不,我希望它在玩家和列表表格相同的情況下輸出「true」,而在沒有的情況下則輸出「false」。如果玩家[2] .name ==列表[2],那麼真正的其他假,例如 – TheEisbaer 2015-04-05 18:10:55

+0

我想你已經明白了。 – 2015-04-05 18:38:03

回答

4

如果我理解(相信我,這是不容易),你想做什麼:

首先:

list={name = "TheEisbaer", name = "Eisbaer68"} 

相當於

list={name = "Eisbaer68"} 

或,更清楚地可能是:

list={} 
list.name = "TheEisbaer" 
list.name = "Eisbaer68" 

由於您在同一個表中使用兩次相同的密鑰,最近的密鑰值會覆蓋前一個密鑰值。

看來你想達到相當於數據庫中的「連接」。如果你想顯示(或者,在一般情況下,過濾器)的球員有他們的「名」的「記錄」也出現在列表中,也許是這樣的:

players = 
    { 
    {uuid= 'abc', name = 'TheEisbaer' }, 
    {uuid= 'def', name = 'Eisbaer68'  }, 
    {uuid= 'ghj', name = 'kevin'   }, 
    } 

list = { TheEisbaer=true, Eisbaer68=true } 

for _,t in ipairs(players) do 
    if list[t.name] then   --if key exists in list table ... 
    print(t.name .. ' => ' .. t.uuid) 
    end 
end 

這裏的列表中有鑰匙,使它查找起來更簡單。你也可以做不同的事情,但它可能需要一個嵌套的FOR循環來遍歷兩個表之間的所有可能的組合。

相關問題