Lua знайсці ключ ад значэння

Я працую з гэтым:

    chars = {
         ["Nigo Astran"]="1",
         ["pantera"]="2"
         }

   nchar = (chars[$name])+1

Зменныя $ імя дасць мне радок, я аўтарызаваны, у дадзеным выпадку: «Nigo Astran» і NCHAR мае значэнне "2" калі я знаходжуся ў "Ниго Astran" , і гэтак далей. Я лічу, што вы атрымаеце гэтую ідэю.

Цяпер я хачу, каб атрымаць клавішу ад значэння, напрыклад:

калі NCHAR гэта 2 ён павінен даць мне "Пантэра" у якасці ключа. Я проста не атрымліваю значэнне ключа.

5

3 адказы

Калі вы апынецеся неабходнасці, каб атрымаць ключ ад значэння табліцы, разгледзім перагортваючы табліцу ў

function table_invert(t)
   local s={}
   for k,v in pairs(t) do
     s[v]=k
   end
   return s
end
10
дададзена
@HeMan, фіксаваны, дзякуй.
дададзена аўтар lhf, крыніца
Цыкл адсутнічае зрабі.
дададзена аўтар Brandon, крыніца
добра атм ім з дапамогай гэтай функцыі кода get_key_for_value (т, значэнне) для K, V ў пары (Т), калі v == значэнне, а затым вярнуцца да канчатковага вяртання нулявога канца цяпер ім знайсці іншую праблему, калі мая табліца сканчаецца, і вяртае нуль я хачу гэта, у цыкл ад першага значэння, не можа зрабіць гэта яшчэ <, <
дададзена аўтар Wesker, крыніца

Я не думаю, што Theres нічога больш эфектыўным, чым цыкл па запісах ў табліцы, выкарыстоўваючы пары і параўноўваючы ключы.

Вы можаце зрабіць гэта, выкарыстоўваючы нешта накшталт гэтага

function get_key_for_value( t, value )
  for k,v in pairs(t) do
    if v==value then return k
  end
  return nil
end

Тады вы будзеце выкарыстоўваць яго як гэта:

local k = get_key_for_value( chars, "1" )
3
дададзена
добра, што працуе, але на жаль, я не магу зрабіць, як <да> NCHAR = (знакі [$ імя]) + 1 get_key_for_value (знакаў, NCHAR) будзе нулявы ИДК, чаму, гэта была мая праблема ў пачатку XD
дададзена аўтар Wesker, крыніца
атрымаў гэта я зрабіў гэта з ToString() у любым выпадку люблю цябе <3
дададзена аўтар Wesker, крыніца

лепшы спосаб зрабіць гэта, як гэта

 local autoreply={
['hey']='hi',
['how are u']='am fine what about u?',
['how r u']='am fine what about u?',
['how are you']='am fine what about u?',
['sleep']='rockabye bayby good dreems',
['السلام']='وعليكم السلام ورحمة الله وبركاته',
}
local keys={'hey','how are u','how r u','how are you','sleep','السلام'}
function getValueFromKey(table,key)
  for k,v in ipairs(keys)do
  if string.find(string.upper(key),string.upper(v)) then return table[v] end
  end
   return false
end
1
дададзена