【发布时间】:2014-07-03 03:24:26
【问题描述】:
我正在尝试创建一个包含本地函数的函数。主函数将接收来自外部源的输出,并且其中的函数将需要转换该输入并返回结果以供以后使用。我的问题是我目前尝试这样做的方式,当我尝试在主函数中放入我的第一个本地函数时,我继续得到nil。这是一个例子:
function stats(input)
height, weight, name, age, gender, relate = string.match(input, "(%d*)ft,(%d*)lbs,(%w*),(%d*),(%u*),(%u)")
if name then
function nameInit(relate)
relateTable = {["F"] = "Friend", ["R"] = "Relative"}
for k,v in pairs (relateTable) do
if relate == k then
relship = v
return relship
end
end
end
end
person = name.." is "..age.." years old, weighs "..weight.." and blah blah blah....
return person
end
print (stats("5.8ft, 160lbs, Mike Scott, 19, M, F"))
显然,这个主题是不切实际的,但我正在尝试做的是在最终响应方面遵循相同的路线。我目前收到lua: filename: attempt to concatenate global 'relship' (a nil value)?我可以在没有嵌套函数的情况下得到我想要的响应。但是当我尝试详细说明我想收到的响应并将该函数放在全局函数中时,我开始得到这些响应。每当我尝试在其他函数中使用函数时,这似乎都是我的问题。我可以创建两个单独的全局函数并打印其中一个函数的结果。但是当我尝试在另一个中使用一个的那一刻,我把自己搞砸了。任何可以花一些时间帮助初学者更好地理解他做错了什么的人都会很棒!谢谢大家。
【问题讨论】:
-
你在哪里打电话
nameInit?你只是在这里定义它,但没有任何东西在调用它。 -
另外,为什么不将
stats(input)改为stats(ht, wt, name, age, gender, relate)而不是使用string.match 来匹配它们呢? -
与@ColonelThirtyTwo 一起说您也没有在该代码sn-p 的任何地方连接
relship,因此它不会产生该错误。如果您想获得帮助,您需要向我们提供更准确、更完整的代码清单。 (作为一般提示,您还希望使用局部变量,包括函数,而不是到处使用全局变量。) -
@ColonelThirtyTwo 谢谢你的帮助!
-
@EtanReisner 很抱歉没有加入当地人。在我的代码中,我确实使用它。当我输入我的示例代码时,我完全忽略了这样做。我很抱歉。但我非常感谢您的帮助!
标签: function lua nested-function