【发布时间】:2017-08-25 00:13:02
【问题描述】:
我正在尝试使用Torch 7 构建CNN。我对Lua 很陌生。我试图关注这个link。我在下面的代码块中遇到了一个叫setmetatable 的东西:
setmetatable(train_set,
{
__index = function(t, i)
return {t.data[i], t.label[i]}
end
});
我知道第二个参数充当表 train_set 的元表。
1) t 是元表还是 t 只是 train_set 的另一个名称?
2) 每当针对__index 使用函数时,解释器是否假定第一个参数(t)是一个表(或元表,取决于对第一个问题的回答)?第二个参数总是key 还是index?
3) 我的理解是,如果我使用train_set.data[1],它将调用__index。答案here 表示__index 在表中不存在key 时被调用。但是t.data[1] 和train_set.data[1] 一样吗?如果是这样,口译员是怎么知道的?
【问题讨论】:
标签: lua lua-table torch metatable