打印指定字符串所有子字符串

function iter2(s)
   s.endq = s.endq+ 1
   if s.endq <= #s.line  then --如果截取字符串最后一个字符位置不超过长度
       return string.sub(s.line, s.start, s.endq)
   elseif s.start <= #s.line then--超过长度则将截取字符串开头位置往后加1
       s.start = s.start + 1
       s.endq = s.start --截取字符串最后一个字符位置初始化为开头位置
       return string.sub(s.line, s.start, s.endq)
   end
end

function traverse(s)
   local r = {line= s, start=1,endq=0}
   return iter2,r
end
s = "hello"
for s in traverse(s) do
   print(s)
end