Function 函数返回nil,但应该返回true或false 函数表。includeIndex(t,索引) 对于k,v成对(t)do 如果k==索引,则 返回真值 结束 结束 返回错误 结束 函数表。在(t,索引)处删除 如果表.includeIndex(t,索引),则 表.删除(t,索引) 结束 结束 函数表.删除(t,值) 如果表中包含(t,值),则 表.删除(t,表.索引(t,值)) 返回值 结束 结束 功能表.索引(t,项) 对于k,v成对(t)do 如果类型(t[k])==‘表’,则 如果表.相等(t[k],项目),则 返回k 结束 其他的 如果t[k]==项目,则 返回k 结束 结束 结束 返回“无” 结束 函数表dup(t) 局部w={} 对于k,v成对(t)do w[k]=v 结束 返回w 结束 函数表。包括(t,值) 对于k,v成对(t)do 如果t[k]==值,则 返回真值 结束 结束 返回错误 结束 功能选项卡(选项卡) 返回setmetatable(tab,{uuuu index=table}) 结束 函数表。空(t) 对于k,v成对(t)do 如果v~=nil,那么 返回错误 结束 结束 返回真值 结束 功能表。拒绝(原件、项目) 本地t=表.dup(原始) 对于k,v成对(项目)do 表.删除(t,v) 结束 返回t 结束 --------------------------------------------------- 函数表.testrejectedArray(t,rejected,index) 选项卡(已拒绝) 如果index==nil,则 索引=1 结束 如果被拒绝:empty(),那么——就是我说的那一行。 打印('yey') 返回真值 其他的 如果被拒绝:包括(t[索引]),然后 t:testrejectedArray(拒绝:拒绝({t[index]}),索引+1) 其他的 如果索引
“--”之前的所有内容只有在您想运行它时才需要。我应该那样发帖吗 函数“testrejectedArray”返回nil,但应该返回true/false值 当我运行代码时,它会打印“yey”, 所以,若块正在运行,但若“returntrue”是下一行,那个么怎么可能不返回某些内容呢 关键是,如果我们将“rejected:empty()”替换为“true”,那么 函数“testrejectedArray”将返回true 那么函数返回false? 但如果我们将“已拒绝:empty()”替换为“false” 是的,不要打印“yey”Function 函数返回nil,但应该返回true或false 函数表。includeIndex(t,索引) 对于k,v成对(t)do 如果k==索引,则 返回真值 结束 结束 返回错误 结束 函数表。在(t,索引)处删除 如果表.includeIndex(t,索引),则 表.删除(t,索引) 结束 结束 函数表.删除(t,值) 如果表中包含(t,值),则 表.删除(t,表.索引(t,值)) 返回值 结束 结束 功能表.索引(t,项) 对于k,v成对(t)do 如果类型(t[k])==‘表’,则 如果表.相等(t[k],项目),则 返回k 结束 其他的 如果t[k]==项目,则 返回k 结束 结束 结束 返回“无” 结束 函数表dup(t) 局部w={} 对于k,v成对(t)do w[k]=v 结束 返回w 结束 函数表。包括(t,值) 对于k,v成对(t)do 如果t[k]==值,则 返回真值 结束 结束 返回错误 结束 功能选项卡(选项卡) 返回setmetatable(tab,{uuuu index=table}) 结束 函数表。空(t) 对于k,v成对(t)do 如果v~=nil,那么 返回错误 结束 结束 返回真值 结束 功能表。拒绝(原件、项目) 本地t=表.dup(原始) 对于k,v成对(项目)do 表.删除(t,v) 结束 返回t 结束 --------------------------------------------------- 函数表.testrejectedArray(t,rejected,index) 选项卡(已拒绝) 如果index==nil,则 索引=1 结束 如果被拒绝:empty(),那么——就是我说的那一行。 打印('yey') 返回真值 其他的 如果被拒绝:包括(t[索引]),然后 t:testrejectedArray(拒绝:拒绝({t[index]}),索引+1) 其他的 如果索引,function,lua,return,Function,Lua,Return,“--”之前的所有内容只有在您想运行它时才需要。我应该那样发帖吗 函数“testrejectedArray”返回nil,但应该返回true/false值 当我运行代码时,它会打印“yey”, 所以,若块正在运行,但若“returntrue”是下一行,那个么怎么可能不返回某些内容呢 关键是,如果我们将“rejected:empty()”替换为“true”,那么 函数“testrejectedArray”将返回true 那么函数返回false? 但如果我们将“已拒绝:empty()”替换为“fals
因此,“rejected:empty()”返回true,但出于某种原因,它不会返回任何内容。由于您递归调用
testrejectedArray
,因此需要在每次调用之前添加return
:
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)
如果被拒绝:包括(t[index]),然后
returnt:testrejectedArray(rejected:rejected({t[index]}),index+1)--这不是问题,但您的代码太复杂了。例如,table.includeIndex
可以简单地写成returnt[k]~=nil
和table.empty
asreturn next(t)~=nil
。在这两种情况下都不需要pairs
循环。“--”之前的所有代码都是为了使其仅可运行。因此,不管代码有多混乱,但是您的建议有助于改进代码,谢谢。
if rejected:include(t[index]) then
return t:testrejectedArray(rejected:reject({t[index]}),index + 1) --<--
else
if index < #t + 1 then
return t:testrejectedArray(rejected,index + 1) --<--
else
print('haha')
return false
end
end