cra*_*er1 3 lua function nested-function
我有这个代码:
function test()
function awesome()
print("im awesome!")
end
function notawesome()
print("im not awesome.")
end
function notevenawesome()
print("im not even awesome...")
end
end
test().notawesome()
Run Code Online (Sandbox Code Playgroud)
当我运行它时,控制台打印
15:尝试索引一个 nil 值
我正在试图做的是调用函数notawesome()函数内试验(+) ,我该怎么做?
您的函数没有返回任何内容(因此返回 nil)。这样的事情应该工作:
function test()
function awesome()
print("im awesome!")
end
function notawesome()
print("im not awesome.")
end
function notevenawesome()
print("im not even awesome...")
end
result = {}
result["notawesome"] = notawesome
result["awesome"] = awesome
result["notevenawesome"] = notevenawesome
return result
end
test().notawesome()
Run Code Online (Sandbox Code Playgroud)
@Axnyff解释了你可能想要做什么。我会解释你做了什么。
如果您熟悉其他语言,请注意 Lua 没有函数声明;它具有函数定义,它们是在求值时产生函数值的表达式。您使用的函数定义语句只是隐式包含赋值的快捷方式。请参阅手册。
当您运行代码时,将对函数定义进行求值,并将生成的函数值分配给变量test。然后对变量test进行求值,并将其值作为函数调用(并且它是一)。
当该函数执行时,将评估三个函数定义并将其分别分配给变量awesome、notawesome和notevenawesome。它不返回任何内容。
test因此,当调用( )的结果nil由字符串“awesome”索引时,您会收到错误。
如果您想调用变量引用的函数值awesome,只需执行即可awesome()。
| 归档时间: |
|
| 查看次数: |
2581 次 |
| 最近记录: |