2017-02-09 61 views
1

你好我是一個新手在Lua我只是想知道是否有一種方法來獲取表的關鍵和價值不使用對,ipairs,下一個或其他迭代器?提前致謝。!導航表中不使用對在Lua

+0

其實我的任務創建一個莫爾斯電碼。使用它可以很容易地完成。但我們的老師說如果我們不嘗試使用成對或迭代器,他會給我們更好的成績。我已經停留了整天尋找一種不使用迭代器的方法,但我仍然沒有找到方法... –

+0

遍歷表的原始函數是'next'。如果沒有它,或者「雙」(使用「下一個」),就沒有其他辦法。 – lhf

+0

是的,這就是爲什麼即時通訊如此困惑如何遍歷表,而不使用lua構建的函數......感謝回覆 –

回答

2

我不相信這是可能的,因爲你用這樣的方式表達了你的問題,這意味着密鑰是未知的。檢查某個值及其相應鍵的唯一方法是遍歷整個表。

但是,也許我誤解了,你想從一個鍵獲得一定的價值,而無需遍歷整個表。

假設你有一個莫爾斯命名錶如下:

morse = { a = ".-"; b = "-..."; } -- And so on 

如果你想爲一個字符莫爾斯你可以做如下轉換:

morse["a"] --Which will return the string ".-" 

你可以做相反,並用下面的所有莫爾斯值和它們相應的字母來定義一個表格。請注意使用方括號來「轉義」字符。

morse = { [".-"] = "a"; ["-..."] = "b" } 
morse[".-"] -- This will return "a" 
+0

對不起。我忘了說我必須創建一個可以將英文轉換爲莫爾斯或莫爾斯轉換爲英文的莫爾斯電碼。感謝先生的答覆,我嘗試使用這種方法使用對我可以同時獲得關鍵和價值,這就是爲什麼我一直在想我怎麼能得到像'莫爾斯= {[「.-」] =「a」}莫爾斯鍵= [「a」]會返回「a」而不是「.-」 –

0

基於your comment,我認爲你正在尋找使用映射表中的字符串替換。我想你可以使用string.gsub here(如果你的老師仍然堅持.gsub是一個迭代器,你可以問他們禮貌,你是不知道,他們聲稱該方法的人員將樂於實際瞭解同):

local str = "sos sos sos" 
local morse = {s = "...", o = "---"} 

print(str:gsub("%a", morse))