2015-03-10 3 views

ответ

4

два основных отличия.

Первый возвращает значения, возвращенные с bar вызывающему абоненту foo. Второй игнорирует их полностью.

Первый также рассматривается как хвостовой вызов и как таковой может быть устранен для сохранения фрейма стека (предотвращает рекурсию от взорвания вашего стека), а второй - нет.

+0

Допустим, что мне действительно не нужно возвращаемое значение бара. Будет ли лучше использовать вторую? – Mico

+0

определенно нет. Вы можете прочитать здесь http://www.lua.org/pil/6.3.html, чтобы узнать, почему форму возврата somefun() всегда лучше, если последняя строка вашей функции была somefun() – Alar

+1

Единственная причина, чтобы избежать хвоста -call будет лучше получать сообщения об ошибках (поскольку хвостовые вызовы затрудняют чтение трассировки стека). Но это вряд ли будет представлять собой общую проблему и, скорее всего, будет «не может понять, что происходит, давайте помогаем мне отлаживать» временное избегание. –

Смежные вопросы