1
мне было интересно, есть ли существенная разница междуLua функция возвращает
function foo()
do something
return bar()
end
и
мне было интересно, есть ли существенная разница междуLua функция возвращает
function foo()
do something
return bar()
end
и
два основных отличия.
Первый возвращает значения, возвращенные с bar
вызывающему абоненту foo
. Второй игнорирует их полностью.
Первый также рассматривается как хвостовой вызов и как таковой может быть устранен для сохранения фрейма стека (предотвращает рекурсию от взорвания вашего стека), а второй - нет.
Допустим, что мне действительно не нужно возвращаемое значение бара. Будет ли лучше использовать вторую? – Mico
определенно нет. Вы можете прочитать здесь http://www.lua.org/pil/6.3.html, чтобы узнать, почему форму возврата somefun() всегда лучше, если последняя строка вашей функции была somefun() – Alar
Единственная причина, чтобы избежать хвоста -call будет лучше получать сообщения об ошибках (поскольку хвостовые вызовы затрудняют чтение трассировки стека). Но это вряд ли будет представлять собой общую проблему и, скорее всего, будет «не может понять, что происходит, давайте помогаем мне отлаживать» временное избегание. –