Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.015 c
11-1264696701
tippa
2010-01-28 19:38
2017.01.15
из RichEdit в PStrList


2-1424681725
Эрнест
2015-02-23 11:55
2017.01.15
URLEncodeReservedChars


2-1429690912
Token
2015-04-22 11:21
2017.01.15
Class functions


2-1425049582
Гарик
2015-02-27 18:06
2017.01.15
Открыть приложение


15-1452576702
sniknik
2016-01-12 08:31
2017.01.15
Помогите в анализе ошибок по дампам




   Наверх