Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
ВнизТернарный оператор в Delphi Найти похожие ветки
← →
K-1000 © (2016-01-28 15:22) [0]Как бы вы назвали функцию выполняющую роль тернарного оператора в Delphi?
Есть IfThen(), но делая свою "либу" часто встречаю пересечения с модулем "Math.pas". Лучше сделать свои перегруженные функции с другим названием.
← →
Inovet © (2016-01-28 15:32) [1]iif часто встречается
← →
Dimka Maslov © (2016-01-28 15:45) [2]Si_Ergo_Aliud
← →
Rouse_ © (2016-01-28 15:51) [3]IIF есесн - классика
← →
Kerk © (2016-01-28 16:29) [4]Побуду занудой. Такая функция не может выполнять роль тернарного оператора.
← →
Юрий Зотов © (2016-01-28 18:02) [5]ThatFunctionIsTernaryOperator
← →
Rouse_ © (2016-01-28 18:24) [6]
> Kerk © (28.01.16 16:29) [4]
> Побуду занудой. Такая функция не может выполнять роль тернарного
> оператора.
Я тоже - нет такого понятия как тернарный оператор в двоичной схеме :)
← →
DayGaykin © (2016-01-28 18:33) [7]
> Побуду занудой. Такая функция не может выполнять роль тернарного
> оператора.
Замыканиями можно сделать, нет?
← →
Kerk © (2016-01-28 18:34) [8]
> DayGaykin © (28.01.16 18:33) [7]
Можно. Но выглядеть будет жутко :)
← →
DayGaykin © (2016-01-28 18:52) [9]Вот еще немного жути:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
threadvar it: Boolean;
threadvar v: Integer;
function ifthen(a,b,c: boolean): integer;
begin
Result := v;
end;
function _if(b:boolean): Boolean;
begin
it := b;
Result := b;
end;
function _v(i: Integer): Boolean;
begin
v := i;
Result := False
end;
begin
try
Writeln(
ifthen(it and _v(10), it or _v(3), _if(1<0))
);
Writeln(
ifthen(it and _v(10), it or _v(3), _if(1>0))
);
except
on E: Exception do
Writeln(E.ClassName, ": ", E.Message);
end;
Readln;
end.
← →
DayGaykin © (2016-01-28 19:01) [10]Или так, чуть менее жутко:
program Project1;
threadvar _v: Integer;
function ifthen(a: boolean): integer;
begin
Result := _v;
end;
function v(i: Integer): Boolean;
begin
_v := i;
Result := True;
end;
begin
Writeln(
ifthen((1<0) and v(10) or v(3))
);
Writeln(
ifthen((1>0) and v(10) or v(3))
);
Readln;
end.
← →
Юрий Зотов © (2016-01-28 19:07) [11]И ЭТО называется синтаксическим САХАРОМ?
Это - синтаксический хинин.
← →
картман © (2016-01-28 19:33) [12]мож стрихнин?
← →
Rouse_ © (2016-01-28 19:35) [13]Эмм, стесняюсь спросить, а где здесь тернарный оператор? :)
← →
Сергей Суровцев © (2016-01-29 04:34) [14]>DayGaykin © (28.01.16 19:01) [10]
>Или так, чуть менее жутко:
Я бы сказал, просто чуть более коротко.
← →
KSergey © (2016-01-29 10:13) [15]Стандартное название таких функций iif, хотя при использовании использовании функций есть серьёзное отличие от истинно тернарного оператора.
← →
kilkennycat © (2016-01-31 02:10) [16]компилятор xc8 в случае использования тернара в виде a=b?c:d создает более громоздкий код, чем при if b then a=c else a=d
Сиё есть печалька.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2017.01.15;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.065 c