Привет всем, это второй короткий туториал по vlang, для туториалов я пытаюсь выбрать проблемы, с которыми я столкнулся при работе с языком, и представить их решения, а сегодняшний туториал будет посвящен горячей перезагрузке кода.
Я столкнулся с проблемами, следуя руководству по горячей перезагрузке кода в документации V и примерам, где мне нужно было создать проблему, но сегодня (4 декабря) я наконец нашел решение, прочитав другие подобные проблемы.
Итак, давайте начнем с основ, для этого примера мы собираемся объявить функцию, которая печатает сообщение, и в функции main мы будем вызывать эту функцию внутри цикла каждые n миллисекунды:
module main import time fn hot_code(v int) { println('message to change $v') } fn main() { mut v := 1 for { hot_code(v) time.sleep(500 * time.millisecond) v+=1 } }
если мы запустим пример с:
v run hotcodereload.v
мы должны увидеть сообщение, распечатываемое на терминале, но если мы изменим содержимое println, ничего не произойдет, чтобы это работало, мы должны добавить свойство live на в верхней части функции hot_code:
[live] fn hot_code(v int) { println('message to changes =>=> 3 $v') }
Но если мы попытаемся запустить команду в учебнике:
v -live run hotcodereload.v
Получаем ошибку доступа к памяти, чтобы избежать этой ошибки, нам достаточно использовать команду watch вместо запуска вот так:
v watch run hotcodereload.v
И теперь код запустится, и вы можете просто изменить сообщение в println, и ваши изменения будут загружены автоматически.
И это работает!!!
Невероятно, как простая вещь заняла у меня недели, чтобы понять, поэтому я создаю этот учебник, чтобы вам не пришлось проходить через это.
Надеюсь, вам понравилось, и в основном надеюсь, что вы найдете это полезным
Спасибо за прочтение!