- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个漂亮的小 Lua 表解析器,它打印出看起来很漂亮的 lua 代码,我喜欢它……它工作得很好。有一个小问题...如果我要打印一个表或数组,它有任何整数键,它使用 pairs
循环遍历它。 (讽刺的是,这不会弄乱代码),但我宁愿它使用 ipairs
如果可能的话。所以我想知道是否可以检查表(无需物理查看它)是否可以使用 ipairs 首先循环遍历它,否则使用对。那么有没有办法从 0 而不是 Lua 的默认 1 开始循环?
Lua 表解析器(在 google 上找到的基本代码,对其进行了更改以使其打印更友好的数组)...
function TableParser(name, object, tabs)
local function serializeKeyForTable(k)
if type(k)=="number" then
return ""
end
if string.find(k,"[^A-z_-]") then
return k
end
return k
end
local function serializeKey(k)
if type(k)=="number" then
if k == 0 then
return "\t[" .. k .."] = "
else
return "\t"
end
end
if string.find(k,"[^A-z_-]") then
return "\t" .. k .. " = "
end
return "\t" .. k .. " = "
end
if not tabs then tabs = "" end
local function serialize(name, object, tabs) -- = {
local output = tabs .. (name ~= "" and name .. " = " or "") .. "{" .. "\n"
for k,v in pairs(object) do
if type(v) == "number" then
output = output .. tabs .. serializeKey(k) .. v
elseif type(v) == "string" then
output = output .. tabs .. serializeKey(k) .. string.format("%q",v)
elseif type(v) == "table" then
output = output .. serialize(serializeKeyForTable(k), v, tabs.."\t")
elseif type(v) == "boolean" then
output = output .. tabs .. serializeKey(k) .. tostring(v)
else
output = output .. tabs .. serializeKey(k) .. "\"" .. tostring(v) .. "\""
end
if next(object,k) then
output = output .. ",\n"
end
end
return output .. "\n" .. tabs .. "}"
end
return serialize(name, object, tabs)
end
最佳答案
So I want to know is it possible to check a table (without physically looking at it) if it can use ipairs to loop through it first else use pairs.
ipairs
首先跟踪最大的 key
ipairs
迭代器返回。然后使用
pairs
再次迭代并忽略
1
之间的所有整数键以及来自
ipairs
的最大 key .
ipairs
会做点什么,然后看索引
1
在表中 (
rawget( object, 1 ) ~= nil
)。检查是否
ipairs
如果不迭代表,就不可能覆盖表中的所有元素。
Then is there a way to start looping at 0 instead of Lua's default 1?
ipairs(t)
返回三个值:一个迭代器函数,表
t
作为状态变量,以及初始索引值
0
.如果您使用
-1
作为初始索引值,
ipairs
将在
0
开始迭代(迭代器函数在使用索引值之前总是加一):
t = { 1, 2, 3, [ 0 ] = 0 }
for i,v in ipairs( t ), t, -1 do -- only use first value returned by ipairs
print( i, v )
end
__ipairs
它允许您返回一个自定义迭代器三元组以用于
ipairs
迭代,并且在这种情况下返回的迭代器函数可能需要不同的状态和初始索引值。
for k,v in pairs(object) do
之前插入-环形:
local largest = 0
for k,v in ipairs(object) do
largest = k
local t = type(v)
if t == "table" then
output = output .. tabs .. "\t" .. serialize( "", v, tabs.."\t" )
elseif t == "string" then
output = output .. tabs .. "\t" .. string.format("%q", v)
else
output = output .. tabs .. "\t" .. tostring(v)
end
output = output .. ",\n"
end
if
检查数组键的语句:
for k,v in pairs(object) do
if type(k) ~= "number" or k < 1 or k > largest or math.floor(k) ~= k then
-- if type(v) == "number" then
-- ...
end
end
TableParser
功能见下表:
local t = {
1, 2, 3,
value = "x",
tab = {
"a", "b", field = "y"
}
}
print( TableParser( "", t ) )
{
1,
2,
3,
tab = {
"a",
"b",
field = "y"
},
value = "x"
}
关于parsing - Lua:检查表是否可以通过 ipairs & ipairs 从 0 开始循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27674367/
我有一个输入文件 Corn Fiber 17 Beans Protein 12 Milk Protien 15 Butter Fat 201 Eggs Fat 2 Bread Fiber 12 Egg
有什么方法可以检查工作表是否有过滤数据(如果有过滤数据,则清除过滤器,否则不执行任何操作)?我这里有这段代码,但我不知道如何编写第二部分: Sub ProtectAll() Dim wSheet
我正在编写如下查询,以根据特定值从表中检索特定值。 select name from XXX where number="2033" 此查询将在整个表中搜索。现在我希望这个查询应该只检查从第四行到最后
有没有办法检查您尝试保存到表中的实例是否已存在于该表中,但您不知道这样的 ID: MyObject instance = (MyObject) session.get(MyObject.class,
有没有办法检查表的列中是否存在多个值,即使这些值不在同一行中? 我有这个问题: select (select country from storage where country = 'Germany
我正在尝试构建一个脚本,使用 jQuery $each 函数检查复选框是否被选中。下面是 HTML 代码: World Economy
我想检查表 tr td 是否仍然有虚拟文本。如果那是真的,那么应该出现一条消息,他们必须在那里输入一些文本(通过拖放) 拖放工作正常那不是问题我只需要检查 td 是否仍然有虚拟 tekst否则无法进行
我有一个主表人 人员字段:Id、AlterationDate 以及一对多链接中的操作表操作 操作字段:Id、PeopleID、CreationDate 我想查找 people 中更改日期晚于由 per
CREATE UNLOGGED TABLE IF NOT EXISTS 我如何首先检查是否创建了所需的表 UNLOGGED,如果没有相应地更改表? Postgres 9.4 最佳答案 您可以检查表
我试图在鼠标悬停时突出显示表格行。每行 (tr) 已经有一个“偶数”或“奇数”类。因此,要突出显示鼠标悬停时的行,我需要先从该行中删除 CSS 类“偶数”或“奇数”。请多多看我的剧本: $('tr')
我想检查一行是否包含具有特定标题和年份的 td。这是我的函数,问题是 title2 和year2 设置为未定义。如何正确获取单元格值? var table = $("#mainTable");
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 6 年前。 Improve th
我有一个名为:workers 的表和一个名为:schedule 的表,其格式如下: worker : id, name 时间表: day, month, name 我需要询问表“workers”给我两
我有以下功能,它显示来自数据库的博客文章: function show_blog_posts() { include('connection.php'); $sql = "SELECT
我有一个包含行的表,每一行都有几个 元素。最后一个元素有一个复选框。他们在 设置为 runat="server" .我在页面上有另一个名为“chkAll”的复选框,单击它时,我想用 javascrip
我希望创建一个 HIVE SQL 查询来查找表 1 中不存在于表 2 中的所有值。我知道我需要使用连接,但是我无法弄清楚如何在这种情况下实现它...... 谢谢, 詹姆士 例如: Table1 url
我想做的是创建一个随机字符串,对照表检查它,如果它已经存在,则创建一个新的随机字符串,然后重试,如果它没有将其插入到所述表中。 我的脚本基于昨天给我的脚本,除了 if(mysql_num_rows($
我正在尝试创建一个页面来查找您输入的文本是否存在于我的数据库表中。但即使存在,它也只返回 0。 最佳答案 total; } ?> 关于php - 检查表(
我有一个名为 origA 的数据框: X, Y 10, 20 11, 2 9, 35 8, 7 还有一个名为 calcB 的: Xc, Yc 1, 7 9, 22 我想检查 calcB 中的每个 Xc
嗨,我有两个表,一个是 topic_dialogue,第二个表是 topic_dialogue_comments 表 topic_dialogue 具有列 id,表 topic_dialogue_co
我是一名优秀的程序员,十分优秀!