Прошу знатоков Lua объяснить, почему на порядок множественного присваивания влияет объявление локальных переменных.
-- этот фрагмент выведет 2, 4local a,a,b,b =1,2,3,4
print(a,b)-- а этот выведет 1, 3
a,a,b,b =1,2,3,4
print(a,b)
Желающие понять, как можно прийти к таким безумным находкам, могут раскрыть спойлер:
Скрытый текст
Многим знакома конструкция вида
local _,_,_,_,a,_,_,b = computer.pullSignal()
Дальше начинается горе от ума.
_ - это тоже имя переменной, на создание которой тратятся ресурсы.
И мне показалось хорошей идей от этой переменной избавиться, заменив её на одну из уже используемых.
local a,a,a,a,a,b,b,b = computer.pullSignal()
Результат выполнения кода совпадает с предыдущим.
Зато этот код имеет иной результат:
a,a,a,a,a,b,b,b = computer.pullSignal()
Для достижения нужного эффекта всё же пришлось использовать дополнительную переменную. Только её использование гарантирует одинаковый результат независимо от наличия local в коде.
Прошу знатоков Lua объяснить, почему на порядок множественного присваивания влияет объявление локальных переменных.
Желающие понять, как можно прийти к таким безумным находкам, могут раскрыть спойлер:
Многим знакома конструкция вида
Дальше начинается горе от ума.
_ - это тоже имя переменной, на создание которой тратятся ресурсы.
И мне показалось хорошей идей от этой переменной избавиться, заменив её на одну из уже используемых.
Результат выполнения кода совпадает с предыдущим.
Зато этот код имеет иной результат:
Для достижения нужного эффекта всё же пришлось использовать дополнительную переменную. Только её использование гарантирует одинаковый результат независимо от наличия local в коде.
Но вопрос поведения Lua всё же остался.
упрощение примера
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах