|
Объясните новичку, что значит ключевое слово Возврат | ☑ | ||
---|---|---|---|---|
0
Eva_J
11.05.19
✎
12:52
|
Почему в конце некоторых процедур или функций есть возврат, в некоторых нет. В чем различие?
|
|||
1
user-ok
11.05.19
✎
12:54
|
Мужыг, Ева, ты прогулял семестр и пытаешься наверстать?
|
|||
2
vde69
11.05.19
✎
12:55
|
"Возврат" - это окончание выполнения процедуры/функции, то есть это выход из нее, код после этого оператора не выполняется...
|
|||
3
mistеr
11.05.19
✎
13:08
|
(2) + Также возврат значения из функции (поэтому в конце).
|
|||
4
fisher
11.05.19
✎
16:11
|
Для процедур это необязательное ключевое слово, производящее "досрочное" завершение работы процедуры. Поэтому возврат в конце процедуры смысла не имеет. Функции же умеют возвращать значения таким образом, что функции можно использовать в выражениях. Для этого используется ключевое слово Возврат с обязательным указанием возвращаемого значения. Можно ничего не возвращать, тогда функция вернет Неопределено. Но это плохой стиль. Функции создают как раз для того, чтобы они что-то возвращали (в противном случае создают процедуру). Поэтому чаще всего в конце функции присутствует ключевое слово Возврат (естественно, могут быть и "досрочные" возвраты).
Вообще, разделение на процедуры и функции довольно формальное - для удобства. В ряде языков разделения нет - есть только функции. |
|||
5
Кодер
11.05.19
✎
16:24
|
А что, так можно было - вместо Ctrl+F1 попросить вас разжевать первый том тов. Кнута???
|
|||
6
fisher
11.05.19
✎
16:25
|
Не завидуй
|
|||
7
Лефмихалыч
11.05.19
✎
19:25
|
этот метод возвращает дебиторскую задолженность
|
|||
8
Лефмихалыч
11.05.19
✎
19:26
|
а, если написать наоборот, то - кредиторскую
|
|||
9
Провинциальный 1сник
11.05.19
✎
21:23
|
(4) "Вообще, разделение на процедуры и функции довольно формальное - для удобства. В ряде языков разделения нет - есть только функции."
Вообще-то, разделение не формальное, а концептуальное. При хорошем стиле программирования функции не имеют права на побочные эффекты, а для процедуры побочный эффект - главная задача. Использование строгих функций без побочных эффектов облегчает работу компилятора и создает верифицируемый код. К СОЖАЛЕНИЮ, во многих (практически во всех) языках это различие стерто, и по сути процедура - всего лишь функция не возвращающая значение. |
|||
10
Garykom
гуру
11.05.19
✎
21:55
|
Процедура это Функция которая не умеет возвращать значения.
Во многих ЯП нет процедур, есть только функции, причем в некоторых количество возвращаемых значений может быть любым от 0 до сколько надо. |
|||
11
Провинциальный 1сник
11.05.19
✎
22:12
|
(10) В том же 1с можно легко возвращать несколько значений - через структуру или именованный список.
|
|||
12
Провинциальный 1сник
11.05.19
✎
22:12
|
+(11) И это, кстати, намного красивее и удобнее, чем менять параметры..
|
|||
13
Garykom
гуру
11.05.19
✎
22:20
|
(11) Лишние действия по заталкиванию в структуру и извлечению.
(12) Типы возвращаемых значений и их наличие в структуре не контролируются автоматом |
|||
14
Провинциальный 1сник
11.05.19
✎
22:24
|
(13) Лишние, зато отладка одно удовольствие. А типы и в параметрах не контролируются, если мы про 1с.
|
|||
15
Garykom
гуру
11.05.19
✎
22:32
|
(14) Для меня удовольствие когда отладка не нужна, ибо синтаксис не дает допускать глупые ошибки типа повторного использования переменных с записью значений других типов и т.д.
Количество говнокода меньше, хотя согласен что печатать больше ибо еще типы надо указывать. Но сча интеллесенсе (подстрочные подсказки по первым буквам) есть в любых практически ide и даже умных редакторах, так то не сильно тормозит ваяние. |
|||
16
Провинциальный 1сник
11.05.19
✎
22:34
|
(15) Кроме удобства отладки четкое разделение входа и выхода (без модификации параметров) облегчает заимствование функций для других проектов. Потому что если ты знаешь что функция "чистая" - то тебе не надо думать ни о чем, кроме как о её вызове. Синус же не портит данные в базе.
|
|||
17
Garykom
гуру
11.05.19
✎
22:36
|
(16) Прикольно что в голанге все параметры в функциях передаются по значению а не по ссылке по умолчанию.
Это отличие от 1С и множества прочих ЯП, тут если про это помнишь тоже кол-во ошибок и отладки минимально. |
|||
18
andrewalexk
11.05.19
✎
23:51
|
(4) :) в смысле необязательное? у тебя где-то в процедуре не отрабатывает возврат? и ты молчал?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |