协助Lua功能

时间:2010-04-08 00:53:04

标签: function lua

如前所述,我对lua相对较新,但同样,我学得很快。我最后一次在这里得到了帮助,这对我帮助很大,而且我能写出更好的剧本。现在我来到另一个问题,我认为这将使我的生活更轻松一些。我不知道我在做什么功能,但我希望有办法做我想做的事情。下面,您将看到我要删除一些不需要的元素的代码示例。是的,我意识到它至少没有效率,所以如果其他人对如何使它更有效率有更好的了解,我会全神贯注。我想做的是用它创建一个函数,这样我就可以通过简单的调用来删除任何变量(比如stripdown(winds))。我感谢所提供的任何帮助,以及任何课程。谢谢!

winds = string.gsub(winds,"%b<>","")  
winds = string.gsub(winds,"%c"," ")  
winds = string.gsub(winds,"  "," ")  
winds = string.gsub(winds,"  "," ")  
winds = string.gsub(winds,"^%s*(.-)%s*$", "%1)")  
winds = string.gsub(winds,"&nbsp;","")  
winds = string.gsub(winds,"/ ", "(")  

约什

3 个答案:

答案 0 :(得分:4)

这应该稍好一些:

function stripdown(str)
    return (str:gsub("%b<>","")  
               :gsub("[%c ]+"," ")  
               :gsub("^%s*(.-)%s*$", "%1)")  
               :gsub("&nbsp;","")  
               :gsub("/ ", "("))
end

将3个模式减少到1个; 返回表达式周围的括号将输出减少到仅来自gsub的第一个返回值。

答案 1 :(得分:3)

对于这样的函数,我是对象语法的忠实粉丝:

function stripdown(winds)
    winds = winds:gsub("%b<>","")  
                 :gsub("%c"," ")  
                 :gsub("  "," ")  
                 :gsub("  "," ")  
                 :gsub("^%s*(.-)%s*$", "%1)")  
                 :gsub("&nbsp;","")  
                 :gsub("/ ", "(")  
    return winds
end

这个版本的效率没有或低于其他版本,但是语法噪音要少得多,我发现更容易看到发生了什么。

没有简单地返回大表达式的技术原因,那是因为gsub返回两个结果。 将其分配给winds“调整”远离(不需要的)第二个结果,该函数仅返回字符串。

答案 2 :(得分:2)

将它变成一个函数是很容易的部分。

function stripdown(winds)
    winds = string.gsub(winds,"%b<>","")  
    winds = string.gsub(winds,"%c"," ")  
    winds = string.gsub(winds,"  "," ")  
    winds = string.gsub(winds,"  "," ")  
    winds = string.gsub(winds,"^%s*(.-)%s*$", "%1)")  
    winds = string.gsub(winds,"&nbsp;","")  
    winds = string.gsub(winds,"/ ", "(")  
    return winds
end

这个函数写入会产生并放弃很多中间字符串结果,这可能是一个相对昂贵的操作。几乎可以肯定值得仔细研究string.gsub()及其pattern language的文档。应该可以在较少的操作中至少完成您指定的一些内容。