Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗dtPmFnER 246 of 412 menu
◀ ▶

Досрочный return в Dart

После того, как выполнится команда return, функция закончит свою работу. То есть после выполнения return больше никакой код не выполнится.

Смотрите пример:

int func(int val) { return val * val; print("!"); // этот код никогда не выполнится } void main() { var res = func(3); }

Это не значит, что в функции должен быть один return. Но выполнится только один из них.

В следующем примере в зависимости от значения параметра выполнится либо первый, либо второй return:

String func(int val) { if (val >= 0) { return "+"; } else { return "-"; } } void main() { print(func(3)); // выведет '+' print(func(-3)); // выведет '-' }

Что выведется на экран в результате выполнения следующего кода:

int func(int val) { return val; var res = val * val; return res; } void main() { print(func(3)); }

Объясните почему.

Что выведет каждый из print в результате выполнения следующего кода:

int func(int val) { if (val <= 0) { return val.abs(); } else { return val * val; } } void main() { print(func(10)); print(func(-5)); }

Объясните почему.

Что выведет каждый из print в результате выполнения следующего кода:

int func(int val) { if (val <= 0) { return val.abs(); } return val * val; } void main() { print(func(10)); print(func(-5)); }

Объясните почему.

Пусть у нас есть функция, возвращающая сумму чисел от 1 до 5:

int func() { var sum = 0; for (var i = 1; i <= 5; i++) { sum += i; } return sum; } void main() { var res = func(); print(res); // выведет 15 }

Пусть теперь мы расположим return внутри цикла, вот так:

int func() { var sum = 0; for (var i = 1; i <= 5; i++) { sum += i; return sum; } return sum; } void main() { var res = func(); print(res); }

В этом случае цикл прокрутится лишь одну итерацию и произойдет автоматический выход из функции и заодно из цикла. А за одну итерацию цикла в переменной sum окажется лишь число 1, а не вся нужная сумма.

Что выведется на экран в результате выполнения следующего кода:

int func(int val) { var sum = 0; for (var i = 1; i <= val; i++) { sum += i; return sum; } return sum; } void main() { print(func(5)); }

Объясните почему.

Что хотел сделать автор данного кода? Исправьте ошибку автора.

То, что return расположен внутри цикла, не всегда может быть ошибкой.

В следующем примере сделана функция, которая определяет, сколько первых элементов списка нужно сложить, чтобы сумма стала больше или равна 10. Если порог так и не достигнут, функция вернет 0:

int func(List<int> arr) { var length = arr.length; var sum = 0; for (var i = 0; i < length; i++) { sum += arr[i]; // Если сумма больше или равна 10: if (sum >= 10) { return i + 1; // выходим из цикла и из функции } } return 0; } void main() { var res = func([1, 2, 3, 4, 5]); print(res); }

А в следующем примере сделана функция, которая вычисляет, сколько целых чисел, начиная с 1, нужно сложить, чтобы результат был больше 100:

int func() { var sum = 0; var i = 1; while (true) { // бесконечный цикл sum += i; if (sum >= 100) { return i; // цикл крутится пока не выйдет тут } i++; } } void main() { print(func()); }

Напишите функцию, которая параметром будет принимать число и делить его на 2 столько раз, пока результат не станет меньше 10. Пусть функция возвращает количество итераций, которое потребовалось для достижения результата.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить