在 LUA 中使用变量访问字典键值

-- 定义函数 Numeral
local function Numeral(roman)
  local symbols = {}

  local sum = 0

  for i = 1,#roman do
     local val = roman:sub(i,i)
     sum = sum + symbols[val]
  end

  return sum
end

-- 调用函数并输出结果
print(Numeral('II'))

基本上,我正在制作一个罗马数字转换为数字的程序。我想做的是像这样使用变量访问字典中的键

local var = 'I'
local something = dictionary.var

但是我正在做的可能有点更复杂。这种做法可行吗?

点赞
用户11740758
用户11740758

当使用表格来表示罗马数字时,通过一个在 __index 中带有 table 函数的元表来使事情变得更容易。

下面的例子可以更清楚地说明这一点:

> _VERSION
Lua 5.4
> romans=setmetatable({},{__index=table})
> romans:insert('I')
> romans:insert('II')
> romans:insert('III')
> romans:insert('IV')
> romans:insert('V')
> romans:insert('VI')
> romans:insert('VII')
> romans:insert('VIII')
> romans:insert('VIIII')
> romans:insert('X')
> romans:concat(', ',1,10)
I, II, III, IV, V, VI, VII, VIII, VIIII, X

(使用交互式 Lua 控制台( lua -i )完成)

如果您想要了解更多关于罗马数字的转换,可以阅读以下内容...

https://gist.github.com/efrederickson/4080372

但要注意,它并非没有漏洞。

你可以做得更好;-)

2021-08-26 12:18:55