Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.08;
Скачать: CL | DM;

Вниз

Как сделать присваивание в операторе if?   Найти похожие ветки 

 
cvg   (2008-05-15 09:41) [0]

Собственно, сабж. Хотелось бы изобразить что-то типа
if (buf:=func(x)) = 0


 
Leonid Troyanovsky ©   (2008-05-15 09:48) [1]


> cvg   (15.05.08 09:41)  

> if (buf:=func(x)) = 0

Очень туманно.

--
Regards, LVT.


 
Игорь Шевченко ©   (2008-05-15 09:55) [2]

Здесь вам не тут.
В Паскале оператор присваивания в отличие от С не имеет значения


 
Vlad Oshin ©   (2008-05-15 10:00) [3]

переписать на MyIF =function(...var ValForCompare:tType):boolean


 
Vlad Oshin ©   (2008-05-15 10:00) [4]

Удалено модератором


 
Vlad Oshin ©   (2008-05-15 10:00) [5]

Удалено модератором


 
cvg   (2008-05-15 10:00) [6]

Ну в том смысле, что можно написать

buf := func(x);
if a and b and ( buf = 0 )
then ...

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

if a and b and ( (buf:=func(x)) = 0 )
then

Вроде, в каком-то из языков (м.б. Си...) такое допускается...


 
cvg   (2008-05-15 10:02) [7]

Значит, в Паскале/Делфи такое никак? :(


 
Ega23 ©   (2008-05-15 10:04) [8]


> cvg   (15.05.08 10:02) [7]
>
> Значит, в Паскале/Делфи такое никак? :(
>


if a and b and (func(x)=0)


 
Игорь Шевченко ©   (2008-05-15 10:04) [9]

Значит никак.


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


Функция-то может не вычисляться, если по условию до нее дело не дойдет.


 
cvg   (2008-05-15 10:10) [10]

Ну и пусть не вычислыется -- мне оно так и надо.

Значит, остается что-нибуть типа

if a and b and func(x,buf)
then ...

Ну а второй параметр описан в func как возвращаемый, и дальше его уже алализировать...


 
TStas ©   (2008-05-15 21:42) [11]

Простите, мне очень любопытно, а что за конечная задача, которую никак нельзя решить иначе, чем применяя сишные циничные извращения?
Меня, конечно, обругают, но ведь присвоение в операторе условия - это не просто плохо - это источнык массы глюков. Любой нормальный человек считает, что равно - это "=". Я в одной книжке даже читал упоминания, что именно из-за так называемых "операторов с побочным действием" какая-то известная программа (мне она не известна) глючит.


 
Игорь Шевченко ©   (2008-05-15 21:51) [12]


> но ведь присвоение в операторе условия - это не просто плохо
> - это источнык массы глюков


При грамотном применении глюков нет.


> Я в одной книжке даже читал упоминания, что именно из-за
> так называемых "операторов с побочным действием" какая-то
> известная программа (мне она не известна) глючит.


Не верь, хозяин, этому константинопольскому ходже. Бумага, она терпеливая.


 
Servy ©   (2008-05-15 22:11) [13]

> buf := func(x);
> if a and b and ( buf = 0 )
> then ...


А чем

if a and b then
begin
 buf := func(x);
 if (buf = 0) then
 ...
end;


не угодило? И гораздо нагляднее, чем длинный if, в котором еще в конце было бы запрятано присваивание.

Или тут борьба за коротий исходник в ущерб понятности? Тогда не тот язык выбран...



Страницы: 1 вся ветка

Текущий архив: 2008.06.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.019 c
2-1211120855
Franzy
2008-05-18 18:27
2008.06.08
Как запустить из программы другую (консольную) программу?


15-1209107695
Slider007
2008-04-25 11:14
2008.06.08
С днем рождения ! 25 апреля 2008 пятница


15-1208954366
Knight
2008-04-23 16:39
2008.06.08
Если программы были домами, то они выглядели бы примерно так..


15-1208856014
samalex
2008-04-22 13:20
2008.06.08
Установка символа разделения целой и дробной части числа


2-1211133293
Favorit
2008-05-18 21:54
2008.06.08
Работа с InterBase