首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建Lua函数以避免同一文件中的代码重复

创建Lua函数以避免同一文件中的代码重复
EN

Stack Overflow用户
提问于 2012-06-06 18:24:54
回答 2查看 157关注 0票数 0

我有以下类型的代码,我在同一个文件中使用了6-7次:

代码语言:javascript
复制
str=(line):match("constraints(.*)end")
for split in string_gsplit(str, '\n', true) do
if
string.match(split,'%a+')
then
a=(split):match("(.-)%s")
a=null_value(a)
b=(split):match("tx=(%a+)")
b=null_value(b)
c=(split):match("ty=(%a+)")
c=null_value(c)
d=(split):match("tz=(%a+)")
d=null_value(d)
e=(split):match("rx=(%a+)")
e=null_value(e)
f=(split):match("ry=(%a+)")
f=null_value(f)
g=(split):match("rz=(%a+)")
g=null_value(g)
print(a..b..c..d..e..f..g)
end 
end

为了避免重复,我想在这里使用函数。这样,我只调用函数,就可以得到打印结果。因为每个匹配函数的参数都是不同的。用双引号("abc")给出的字符串是不同的,不能相同。请帮我创建一个函数。

我试着创建它。看一看:

代码语言:javascript
复制
function f(s)
assert(type(s) == "string")
str=(line):match(s)
for split in string_gsplit(str, '\n', true) do
if
string.match(split,'%a+')
then
end
end
return s
end

为了调用相同的函数,我输入:

代码语言:javascript
复制
s="constraints(.*)end"
f(s) 
EN

回答 2

Stack Overflow用户

发布于 2012-06-07 01:25:38

不太清楚你想要的是什么。您想要删除哪些重复项?split:match-null_value行的列表?您可以通过将模式放在一个列表中来在循环中执行此操作:

代码语言:javascript
复制
local patterns = { "(.-)%s", "tx=(%a+)", "ty=(%a+)", "tz=(%a+)", "rx=(%a+)", "ry=(%a+)", "rz=(%a+)" }
local results = {}
for i,pattern in ipairs(patterns) do
    results[#results+1] = null_value( split:match(pattern) )
end
print(table.concat(results))

提示:

,,

  1. ,你把变量放在括号里,是任意的,不必要的。不使用本地变量的情况下,split:match(patt)的含义与(split):match(patt).
  2. You're相同。变量的作用域越大,代码某一部分中的更改就越有可能对代码中遥远的、不相关的部分产生不利影响,这很难进行推理和调试。您应该尽可能地将变量设置为本地变量,这在Lua中也会更快。
票数 1
EN

Stack Overflow用户

发布于 2012-06-06 19:36:13

您可以在字符串表上创建类似于match和find的函数,如下所示:

代码语言:javascript
复制
function string.ReadArgument( str, pattern )
  return null_value( str:match( pattern ) )
end

您可以在代码中使用它,如下所示

代码语言:javascript
复制
a = split:ReadArgument( "(.-)%s" )
b = split:ReadArgument( "tx=(%a+)" )

诸若此类。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10912366

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档