При разработке либ очень мешает кэширование библиотек: пофиксил очепятку в функции, запускаешь прогу, а она ту же багу выдаёт, так как использует закэшированную версию.
Очевидный вариант решения проблема — это перезагрузить компьютер. Но не думаю, что после каждого изменения кому-то в самом деле захочется бежать перезагружать компьютер.
Другой вариант — это просто выгрузить библиотеку из кэша. Это возможно потому,
что кэш является частью либы package
и доступен в package.loaded
. Это
таблица, ключи которой — спецификатор библиотеки (т. е. название,
например library.util.math
), ну а значения — результаты их выполнения.
Поэтому если заменить значение на nil
, то при следующем вызове require
с
тем же спецификатором библиотека будет ещё раз загружена с диска.
Для библиотеки library.util.math
это делается так:
require("package").loaded["library.util.math"] = nil