Привет всем, это второй короткий туториал по 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, и ваши изменения будут загружены автоматически.

И это работает!!!

Невероятно, как простая вещь заняла у меня недели, чтобы понять, поэтому я создаю этот учебник, чтобы вам не пришлось проходить через это.

Надеюсь, вам понравилось, и в основном надеюсь, что вы найдете это полезным

Спасибо за прочтение!