Следующий сценарий находит простые числа в диапазоне от 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