lua table.sort崩溃"尝试将nil与字符串比较"

我正在尝试在嵌入式Linux设备上使用Lua。table.sort给出了一个奇怪的错误尝试将nil与字符串比较。我在本地的Lua解释器上尝试了完全相同的代码,它可以工作。这可能是什么原因导致的?嵌入式Lua是通过yocto编译的。

# lua
Lua 5.3.5 版权所有(C) 1994-2018 Lua.org,PUC-Rio
> a={}
> a[#a+1]="foo"
> a[#a+1]="baar"
> a[#a+1]="baar_1"
> a[#a+1]="baar_2"
> print(a[0])
nil
> print(#a)
4
> for i=0,#a do print (a[i])
>> end
nil
foo
baar
baar_1
baar_2
> table.sort(a)
尝试将nil与字符串比较
stack traceback:
        [C]: 在函数 'table.sort'
        stdin:1: 在主块中
        [C]: 在 ?
> table.sort(a, function(x,y) print(x); print(y); return x < y end)
foo
baar_2
nil
baar_2
stdin:1: 尝试将nil与字符串比较
stack traceback:
        stdin:1: 在函数 <stdin:1>
        [C]: 在函数 'table.sort'
        stdin:1: 在主块中
        [C]: 在 ?
>  for key, val in pairs(a) do print(key, val) end
1       foo
2       baar
3       baar_1
4       baar_2
>
  • (更新#1添加了打印)
  • (更新#2将print添加到table.sort)
  • (更新#3添加了针对键/值的循环)
点赞