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

Вниз

Тернарный оператор в 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
15-1457038707
Германн
2016-03-03 23:58
2017.01.15
Runtime packages


4-1281052143
korbin dalas
2010-08-06 03:49
2017.01.15
Как прочитать содержимое HDD без использования файлов?


2-1425902713
KBO78
2015-03-09 15:05
2017.01.15
Как правильно быстрее найти элемент с ошибкой List index out of b


6-1281776559
Симулятор
2010-08-14 13:02
2017.01.15
Как сделать симуляцию в индиевских серверах?


15-1457219940
Eraser
2016-03-06 02:19
2017.01.15
Требуется ядерщик