avva: (Default)
[personal profile] avva
(только программистам интересно, наверное)

Почему в процедуральных языках, как правило, нет оператора досрочного выхода из блока? Как break в C, но чтобы работал не только из циклов, а также внутри if-then или вообще любого блока.

Постоянно приходится делать глупые вложенные цепочки условий или некрасивые трюки типа while(1) и выполза по break'у (ну или, понятно, их аналоги в других языках).

Есть какая-то глубокая причина этому?

Date: 2003-04-12 06:35 am (UTC)
From: [identity profile] sply.livejournal.com
Профессора скажут, что провильн обудет если из функции только один return, в конце. А до этого трахайтесь как хотите. И предложат использовать язык с exceptions

Date: 2003-04-12 08:38 pm (UTC)
From: [identity profile] 109.livejournal.com
> Профессора скажут, что провильн обудет если из функции только один return, в конце.

а обосновать такую панкуху профессора не хотят?

Date: 2003-04-13 01:44 am (UTC)
From: [identity profile] sply.livejournal.com
Чтобы код был стройным и понятным - как раз в таких ситуациях ретурны в разных местах выполняют роль того-же goto. Но, конечно, это не догма, такие требования имют значений, пожалуйста, только в лабораторных работах.

Re:

Date: 2003-04-13 09:03 am (UTC)
From: [identity profile] 109.livejournal.com
чтобы код был стройным и понятным, надо, чтобы синтаксис был максимально близок к тому, что происходит на самом деле. то есть, если в одном месте мне из функции надо вернуть 7, а в другом месте 8, то код так и должен содержать в одном месте return 7, а в другом месте return 8.

ничего общего с goto return не имеет, и "его роль" отнюдь не выполняет.

"указание" не использовать множественный return я могу сравнить с... ну, с указанием не использовать ключевое слово "else", например.

December 2025

S M T W T F S
  123 4 56
78 9 10 11 1213
1415 1617181920
21 22 23 24 2526 27
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Dec. 30th, 2025 08:17 am
Powered by Dreamwidth Studios