作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试构建 CNN
使用 Torch 7
.我对 Lua
很陌生.我试图关注这个 link .我遇到了一个叫做 setmetatable
的东西在以下代码块中:
setmetatable(train_set,
{
__index = function(t, i)
return {t.data[i], t.label[i]}
end
});
train_set
的元表。 .
t
元表 or 是
t
只是
train_set
的另一个名称?
__index
使用函数时,解释器是否假定第一个参数(
t
)是一个表(或元表,取决于对第一个问题的回答)?第二个参数总是
key
或
index
?
train_set.data[1]
,它将调用
__index
.答案
here说
__index
在
key
时调用表中不存在。但是是
t.data[1]
与
train_set.data[1]
相同?如果是这样,口译员是怎么知道的?
最佳答案
setmetatable(train_set,
{
__index = function(t, i)
return {t.data[i], t.label[i]}
end
})
{
__index = function(t, i)
return {t.data[i], t.label[i]}
end
}
local my_metatable = {
__index = function(t, i)
return {t.data[i], t.label[i]}
end
}
setmetatable(train_set, my_metatable)
__index
.通过这样做,我们告诉 Lua 当有人索引 train_set 中不存在的字段时该怎么做。
train_set[4]
中的值时例如
train_set[4]
是
nil
, Lua 会检查
__index
被实现。如果是这样,它将调用
__index(train_set, 4)
并给你它的返回值,否则返回
nil
所以解释器知道 t.data[1] 和 train_set.data[1] 是一样的,因为他是把 train_set 放入 __index 的人。
关于Lua - 理解 setmetatable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43128544/
我正在尝试构建 CNN使用 Torch 7 .我对 Lua 很陌生.我试图关注这个 link .我遇到了一个叫做 setmetatable 的东西在以下代码块中: setmetatable(train
我是一名优秀的程序员,十分优秀!