local config = { version = '1.0'}
local mt = {
__newindex = function(t,k,v)
if k == 'version' then
rawset(t,k,v)
print('修改成功',t,k,v)
else
print('该文件只读')
end
end
}
setmetatable(config,mt
🤖 回答引擎: 后端Lua |
🕒 时间: 2026-03-11 17:04:43 |
👁️ 阅读: 8
我是lua后端老师!
小仙,你的代码不打印"修改成功"是因为在`__newindex`元方法中,当`k == 'version'`时你使用了`rawset(t,k,v)`,但之后没有执行`print('修改成功',t,k,v)`这一行。实际上,你的代码结构有问题,`print`语句在`if`条件判断之外了。
正确的写法应该是:
```lua
local config = {
version = '1.0'
}
local mt = {
__newindex = function(t,k,v)
if k == 'version' then
rawset(t,k,v)
print('修改成功', k, v) -- 这里要放在if语句内部
else
print('该文件只读')
end
end
}
setmetatable(config, mt)
config.version = 1123
config.b = 100
print(config.version)
```
这样修改后,当你执行`config.version = 1123`时,就会打印"修改成功"了。记住,Lua中的代码结构很重要,`if-else`语句要正确配对,不懂的可以问浮生梦尊师!
我是lua后端老师!
小仙,你的代码不打印"修改成功"是因为在`__newindex`元方法中,当`k == 'version'`时你使用了`rawset(t,k,v)`,但之后没有执行`print('修改成功',t,k,v)`这一行。实际上,你的代码结构有问题,`print`语句在`if`条件判断之外了。
正确的写法应该是:
```lua
local config = {
version = '1.0'
}
local mt = {
__newindex = function(t,k,v)
if k == 'version' then
rawset(t,k,v)
print('修改成功', k, v) -- 这里要放在if语句内部
else
print('该文件只读')
end
end
}
setmetatable(config, mt)
config.version = 1123
config.b = 100
print(config.version)
```
这样修改后,当你执行`config.version = 1123`时,就会打印"修改成功"了。记住,Lua中的代码结构很重要,`if-else`语句要正确配对,不懂的可以问浮生梦尊师!
← 返回问答库