Значение, возвращаемое с помощью оператора return
, возвращается буквально при каждом вызове функции.
Так что, если вы пишете этот код где-то еще в вашей программе:
bool returnValue = trueOrFalse();
тогда переменная returnValue
будет содержать логическое значение, эквивалентное тому, что было возвращено функцией trueOrFalse()
.
Сама функция не «удерживает» значение, вызывающая функция определяет переменную, которая будет содержать значение после завершения вызова функции.
Что касается вашего второго вопроса, вы правильно используете оператор return
, но вы можете существенно упростить свой код в функции trueOrFalse()
. Вместо этого:
if (validate == true)
{
return true;
}
else
{
return false;
}
Все, что вам нужно, это:
return validate;
Поскольку локальная переменная validate
уже является bool
!
Это устраняет избыточность проверки логического значения по отношению к логической константе (true
), что предотвращает появление странных ошибок и облегчает чтение и понимание кода.
Фактически, вы можете использовать этот общий шаблон в любое время, когда работаете с логическими значениями (bool
). Вместо того, чтобы сравнивать их с литералом false
или true
, вы можете просто написать:
if (validate) // test for truth
{
// do whatever...
}
или
if (!validate) // test for falsity
{
// do whatever...
}