我对 Lua 中的本地函数有点困惑。请看下面的简化示例:
function test()
local function f()
print("f")
g()
end
local function g()
print("g")
end
f()
end
test()
Run Code Online (Sandbox Code Playgroud)
运行此代码后,我在 function 中收到错误f,因为 functiong是nil.
根据我的理解,一旦代码到达对 function 的调用,就应该声明这两个函数g。由于这两个函数尚未到达块的末尾(即它们仍在 function 内test),因此它们应该仍然可以访问。当将函数声明为全局时,此代码可以正常工作。所以,我真的不确定为什么它不能与本地函数一起使用。《Programming in Lua》一书也没有解释这种行为。
我在使用table.sort函数时遇到了Lua的问题.如果你想说服自己,我写了一个小片段,准备你去测试.
test = {"apple", "Bee", "clown" }
table.sort( test )
for k, v in pairs( test ) do
print( k, v )
end
Run Code Online (Sandbox Code Playgroud)
结果是
1 Bee
2 apple
3 clown
Run Code Online (Sandbox Code Playgroud)
即使我想要的结果看起来像这样
1 apple
2 Bee
3 clown
Run Code Online (Sandbox Code Playgroud)
我已经设法弄清楚这是因为table.sort函数使用默认的"<"运算符,而"B"的ASCII值为66,这显然低于ASCII值"a"或"c" ",分别是97和99.我知道我可以在调用table.sort时应用自定义函数,但我不知道该函数的样子.
此外,除非您以后能够恢复它们,否则不能选择将所有字母设为大写或小写.
任何帮助是极大的赞赏.