gpt4 book ai didi

lua - 解释为什么 unpack() 在 Lua 中返回不同的结果

转载 作者:行者123 更新时间:2023-12-04 19:36:47 25 4
gpt4 key购买 nike

以下脚本查找 1 到 13 范围内的素数。当我明确遍历包含结果的表时,我可以看到脚本按预期工作。但是,如果我在表格上使用 unpack() 函数,则只会打印出前 3 个数字。

来自文档:unpack“具有多个返回值的特殊函数。它接收一个数组并返回数组中从索引 1 开始的所有元素作为结果”

为什么它在下面的脚本中不起作用?

t = {}
for i=1, 13 do t[i] = i end

primes = {}
for idx, n in ipairs(t) do
local isprime = true
for i=2, n-1 do
if n%i == 0 then
isprime = false
break
end
end
if isprime then
primes[idx] = n
end
end
print('loop printing:')
for i in pairs(primes) do
print(i)
end
print('unpack:')
print(unpack(primes))

运行

$ lua5.3 primes.lua
loop printing:
1
2
3
5
7
13
11
unpack:
1 2 3

最佳答案

改变

primes[idx] = n

primes[#primes+1] = n

原因是 idx 不是连续的,因为不是每个数字都是素数。

关于lua - 解释为什么 unpack() 在 Lua 中返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518919/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com