Lua 从表中读取
我是Lua的新手,我正在努力学习它。 最近我遇到了下面这行代码,我相信它正在从表中提取一些值Lua 从表中读取,lua,lua-table,Lua,Lua Table,我是Lua的新手,我正在努力学习它。 最近我遇到了下面这行代码,我相信它正在从表中提取一些值 localcontext=context_proto[{{1,batch_size},{1,source_l*imgH}] 我以前从未见过这种阅读表格的特殊方法。如果有人能帮助我理解上述代码的具体功能,我将不胜感激。来自: 类型表实现关联数组,即不仅可以使用数字,而且可以使用除nil和NaN之外的任何Lua值对数组进行索引 该代码使用一个表作为另一个表的索引。如果写得如下,可能会更清楚: local c
localcontext=context_proto[{{1,batch_size},{1,source_l*imgH}]
我以前从未见过这种阅读表格的特殊方法。如果有人能帮助我理解上述代码的具体功能,我将不胜感激。来自:
类型表实现关联数组,即不仅可以使用数字,而且可以使用除nil和NaN之外的任何Lua值对数组进行索引
该代码使用一个表作为另一个表的索引。如果写得如下,可能会更清楚:
local contextIndex = {{1, batch_size}, {1, source_l*imgH}}
local context = context_proto[contextIndex]
如果没有进一步的代码,您在这里看到的代码在本机Lua中没有太多意义。它通常用于火炬。我在网上一个与火炬相关的脚本中找到了你的片段。所以我想这是一个正确的猜测 我对Torch不是很有经验,但从我在文档中看到的情况来看,这将为您提供一个context_proto的次张量。第1行—批次大小和列源 我认为它被称为切片,并在以下演示/教程中介绍: 有关更多详细信息,请参阅火炬文档
这意味着
getmetatable(context\u proto)。
将使用{1,batch\u size},{1,source\u l*imgH}}
作为第二个参数调用索引,调用结果将分配给context
我认为Egor的注释更有用,因为这个答案在技术上是正确的,但它是不完整的,因为返回的值总是nil
,而不使用\u index
元方法(因为用作索引的表值是动态构造的,不能匹配任何内容)。
print 'more complex slicing can be done using the [{}] operator'
print 'this operator lets you specify one list/number per dimension'
print 'for example, t2 is a 2-dimensional tensor, therefore'
print 'we should pass 2 lists/numbers to the [{}] operator:'
print ''
t2_slice1 = t2[{ {},2 }]
t2_slice2 = t2[{ 2,{} }] -- equivalent to t2[2]
t2_slice3 = t2[{ {2},{} }]
t2_slice4 = t2[{ {1,3},{3,4} }]
t2_slice5 = t2[{ {3},{4} }]
t2_slice6 = t2[{ 3,4 }]
...