Форум: "Начинающим";
Текущий архив: 2008.06.08;
Скачать: [xml.tar.bz2];
ВнизКак сделать присваивание в операторе 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.082 c