2
function table.includeIndex(t,index)
for k,v in pairs(t) do
if k == index then
return true
end
end
return false
end
function table.delete_at(t,index)
if table.includeIndex(t,index) then
table.remove(t,index)
end
end
function table.delete(t,value)
if table.include(t,value) then
table.delete_at(t,table.index(t,value))
return value
end
end
function table.index(t,item)
for k,v in pairs(t) do
if type(t[k]) == 'table' then
if table.equal(t[k],item) then
return k
end
else
if t[k] == item then
return k
end
end
end
return "none"
end
function table.dup(t)
local w = {}
for k,v in pairs(t) do
w[k] = v
end
return w
end
function table.include(t,value)
for k,v in pairs(t) do
if t[k] == value then
return true
end
end
return false
end
function tab(tab)
return setmetatable(tab,{__index=table})
end
function table.empty(t)
for k,v in pairs(t) do
if v ~= nil then
return false
end
end
return true
end
function table.reject(original,items)
local t = table.dup(original)
for k,v in pairs(items) do
table.delete(t,v)
end
return t
end
---------------------------------------------------
function table.testrejectedArray(t,rejected,index)
tab(rejected)
if index == nil then
index = 1
end
if rejected:empty() then -- The line I'm talking about.
print('yey')
return true
else
if rejected:include(t[index]) then
t:testrejectedArray(rejected:reject({t[index]}),index + 1)
else
if index < #t + 1 then
t:testrejectedArray(rejected,index + 1)
else
print('haha')
return false
end
end
end
end
a = tab{1,2,3}
seq = tab{3,1,2}
w = seq:testrejectedArray(a)
print(w)
“---”之前的所有内容仅在需要运行它时才需要。我应该这样发布吗?函数返回nil,但应返回true或false
函数'testrejectedArray'返回零,但应该返回true/false值。
当我运行代码时,它会打印'yey', ,所以如果block正在运行,但如果“return true”是下一行,如何不返回某些内容?
问题是,如果我们用'rejected:empty()'替换为'true',那么 函数'testrejectedArray'将返回true 所以函数返回false? 但是,如果我们用'reject(empty)'替换'false' 它不打印'yey'
所以'rejected:empty()'返回true,但是因为它不会返回我任何东西。
这不是http://codereview.stackexchange.com,但你的代码太复杂了。例如,'table.includeIndex'可以简写为'return t [k]〜= nil'和'table.empty'作为'return next(t)〜= nil'。无论在哪种情况下都不需要“双”环。 – lhf
“---”之前的所有代码在这里只能使其运行。因此,无论代码是多么混乱,但您的建议有助于改善它,所以谢谢。 – Parki