Почему мы используем возврат; оператор в пустую функцию? - PullRequest
3 голосов
/ 14 июня 2019

return; в функции void. Что это на самом деле делает?

void function() {
    if(x==NULL) {
        return;
    }
    else{
        /////
    }
}

Ответы [ 6 ]

7 голосов
/ 14 июня 2019

В показанном вами примере return ничего не делает.Но подумайте об этом примере:

void do_the_thing()
{
    if(it's already done)
        return;

    do the thing;
}

Если делать это дорого или вызывает проблемы, если это уже было сделано, вам нужна логика, подобная этой.И, помимо «затрат», существует множество причин, по которым функция может сделать меньше, чем полный набор действий во время любого вызова.

Другими словами, возвращаясь из функции void, хотя она и выиграла 't возвращает значение, по крайней мере, удержит функцию от выполнения каких-либо последующих действий.

(Теперь, с учетом сказанного, наличие return в середине функции не единственныйДостижение такой цели. Вместо if операторов, которые заставляют функцию возвращаться раньше, вы можете использовать if операторы или else предложения, чтобы заставить функцию делать то, что ей нужно, возвращаясь к моему примеру.мог бы также написать

void do_the_thing()
{
    if( ! already done) {
       do the thing;
    }
}

И это приводит к спорам о вечном стиле, а именно, является ли хорошей или плохой идеей иметь несколько операторов return, разбросанных по функции, или если всегда должен быть ровно один, в конце.)

2 голосов
/ 14 июня 2019

Как правило, это делается для короткого замыкания выполнения, что означает, что оставшийся код в функции не будет выполнен (оператор else не будет оценен или что-либо еще в функции.

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

2 голосов
/ 14 июня 2019

При обнаружении оператора return функция немедленно возвращает функцию, а не продолжает выполнение любого кода, следующего за ним.

Если функция возвращает значение, оператор return должен указывать значениевозвращать.Для функции с типом возврата void значение не требуется.

1 голос
/ 19 июня 2019

За время программирования на C ++ я узнал, что ' void функции ' не имеют return-type . возвращаемый тип используется для объявления функций, например int main(), где тип int является возвращаемым типом, а функция должна возвращать целочисленное значение, чтобы подразумевать успешное завершение. Однако когда мы используем функцию void, все меняется. тип возврата , void; как следует из названия, это означает, что он не будет возвращать значение, он не будет ничего возвращать, поскольку он пуст - пуст. Следовательно, если вы попытаетесь вернуть значение из метода ( function ), который объявлен как void, вы получите ошибку компилятора.

Но если вы предложили:

void function() {    
if(x==NULL) {
    return;
}
else{
    /////
}

}

Приведенный выше код также снова выдаст ошибку, поскольку метод void не создан для возврата значений. Если функция имеет тип возврата int только тогда, эта команда повторного запуска будет работать, но оператор возврата не может использоваться в функции void, поскольку она выдает ошибку.

Надеюсь, это вам помогло!

Для дальнейшего чтения вы можете посетить: http://www.cs.fsu.edu/~cop3014p/lectures/ch7/index.html

Оператор возврата в пустом методе

https://docs.oracle.com/javase/tutorial/java/javaOO/returnvalue.html

1 голос
/ 14 июня 2019

Вы используете return, чтобы остановить функцию без запуска всего кода.

Используя ваш пример:

void function(){
  if(x==NULL){
     return;
  }
  else{
       /////
  }
  ... some other code here ...
}

Если x равно NULL, то функция останавливается и не запускается ... some other code here ....

Если x равно not NULL, программа выполнит то, что указано в операторе else, а также ... some other code here ...

1 голос
/ 14 июня 2019

Вызывает завершение функции (не программы, а только этой функции) без дальнейших действий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...