You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Lua中如何使用变量作为键访问字典的值?罗马数字转换场景问题

Lua 动态键访问表的说明

核心结论

Lua支持使用变量作为键访问表,但是你提到的dictionary.var写法无法实现该需求:

  • 点语法(.)访问表成员时,会将后续标识符作为固定字符串键处理,dictionary.var等价于dictionary["var"],不会读取var变量的实际值
  • 要使用变量的值作为键,必须使用方括号语法:dictionary[var],运行时会先取var变量的值,再以该值为键访问表

基础示例

local dictionary = { I = 1, V = 5, X = 10 }
local var = 'I'
-- 正确用法,得到结果为1
local something = dictionary[var]
-- 错误用法,等价于访问键为"var"的成员,结果为nil
local wrong_result = dictionary.var

罗马数字转换代码修正

你当前代码中的symbols表为空,且没有处理罗马数字的减法规则(如IV代表4、IX代表9的场景),修正后可直接运行的代码如下:

local function Numeral(roman) 
  local symbols = {
    I = 1,
    V = 5,
    X = 10,
    L = 50,
    C = 100,
    D = 500,
    M = 1000
  }
  
  local sum = 0
  local roman_len = #roman
  for i = 1, roman_len do
     local current_val = symbols[roman:sub(i,i)]
     -- 处理前位小于后位的减法逻辑
     if i < roman_len and current_val < symbols[roman:sub(i+1,i+1)] then
        sum = sum - current_val
     else
        sum = sum + current_val
     end
  end
  
  return sum
end

print(Numeral('II')) -- 输出2
print(Numeral('IV')) -- 输出4
print(Numeral('MCMXCIV')) -- 输出1994

内容的提问来源于stack exchange,提问作者Landon Herron-James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 06:27:03