即使返回也无法在函数外部打印函数的参数
Unable to print a function's parameter outside function even when returned
Contents 是一个 table,作为函数 func
的参数传递。问题是我无法从 table contents
中打印出任何值。例如,在这里您可以看到我试图在 table contents
中打印第二个值,但我收到此错误 12: attempt to index global 'contents' (a nil value)
function func(contents)
print(contents[1])
return contents
end
func({"content1", "content2", "content3"})
print(contents[2])
因为你在函数外有print(contents[2])
。 contents
仅适用于函数。根据程序的其余部分 contents
不存在,因此它抛出错误。没有全局变量 contents
并且它说 12:
告诉你错误在第 12 行,它再次具有 print(contents[2])
how can I make contents global
函数参数 contents
是 func
的局部参数,并且在更大范围内隐藏任何名为 contents
的变量。
一个全局变量名只是引用了table_G
中的一个字段。
所以在你的函数中你可以做
_G.contents = contents
但通常您会尽可能避免使用全局变量。
如func
returnscontents
那样
print(func({"content1", "content2", "content3"})[2])
如果您的函数将始终使用全局变量,请创建全局变量并且不要将其作为函数的参数:
contents = {"content1", "content2", "content3"}
function func()
print(contents[1])
print(#contents)
return contents
end
func()
print(contents[2])
如果您确实想要一个全局变量,我建议您重命名您的参数以避免混淆。由于这似乎只是一个示例,而您的 table 似乎包含字符串,我将重命名参数 'strings' 并向您展示可以使用 return 值或全局变量 (repl.it):
contents = {"content1", "content2", "content3"}
function func(strings)
print(strings[1])
print(#strings)
return strings
end
local result = func(contents)
print(contents[2])
print(result[2])
不赞成使用全局变量,您可以通过将 'local' 放在前面使其成为模块本地变量并在模块中的任何位置使用它:
local contents = {"content1", "content2", "content3"}
Contents 是一个 table,作为函数 func
的参数传递。问题是我无法从 table contents
中打印出任何值。例如,在这里您可以看到我试图在 table contents
中打印第二个值,但我收到此错误 12: attempt to index global 'contents' (a nil value)
function func(contents)
print(contents[1])
return contents
end
func({"content1", "content2", "content3"})
print(contents[2])
因为你在函数外有print(contents[2])
。 contents
仅适用于函数。根据程序的其余部分 contents
不存在,因此它抛出错误。没有全局变量 contents
并且它说 12:
告诉你错误在第 12 行,它再次具有 print(contents[2])
how can I make contents global
函数参数 contents
是 func
的局部参数,并且在更大范围内隐藏任何名为 contents
的变量。
一个全局变量名只是引用了table_G
中的一个字段。
所以在你的函数中你可以做
_G.contents = contents
但通常您会尽可能避免使用全局变量。
如func
returnscontents
那样
print(func({"content1", "content2", "content3"})[2])
如果您的函数将始终使用全局变量,请创建全局变量并且不要将其作为函数的参数:
contents = {"content1", "content2", "content3"}
function func()
print(contents[1])
print(#contents)
return contents
end
func()
print(contents[2])
如果您确实想要一个全局变量,我建议您重命名您的参数以避免混淆。由于这似乎只是一个示例,而您的 table 似乎包含字符串,我将重命名参数 'strings' 并向您展示可以使用 return 值或全局变量 (repl.it):
contents = {"content1", "content2", "content3"}
function func(strings)
print(strings[1])
print(#strings)
return strings
end
local result = func(contents)
print(contents[2])
print(result[2])
不赞成使用全局变量,您可以通过将 'local' 放在前面使其成为模块本地变量并在模块中的任何位置使用它:
local contents = {"content1", "content2", "content3"}