从逻辑语句返回多个变量

Waf*_*fle -1 string lua

这是我的代码,可以在不使用表的情况下将字符串分解为每个单独字符的列表:

function explode(s)
    if#s==1 then
        return s
    end
    return s:sub(1,1),explode(s:sub(2))
end
Run Code Online (Sandbox Code Playgroud)

其中#s ==#({explode(s)})
为了使这段代码更短,我想这样做:

function explode(s)
    return#s>1 and(s:sub(1,1),explode(s:sub(2)))or s
end
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为'[条件] a和[结果值] b或[替代] c'不要求有多个结果或替代品.有没有其他方法只使用一个语句返回相同的结果?

小智 6

这是另一个想法:

function explode(s)
    return s:match(("(.)"):rep(s:len()))
end
Run Code Online (Sandbox Code Playgroud)

请注意,这不是很有效.

  • 效率低,是的,但是根据要求(+1)真的很聪明! (2认同)