В чем разница между возвратом void и {.noreturn.}?

В Nim прагма noReturn отмечает процесс, который никогда не возвращается.

Чем это отличается от функции, которая возвращает void?

1 ответ

Решение

Возврате void означает, что функция ничего не возвращает:

proc saySomething(): void =
  echo "something"

Пустые скобки, а также : void являются необязательными:

proc saySomething =
  echo "something"

Аннотирование функции с noReturn означает, что функция вообще не вернется:

proc killTheProgram {.noReturn.} =
  quit(0)

proc raiseSomething {.noReturn.} =
  raise newException(ValueError, "Something")
Другие вопросы по тегам