Delphi新语法和ifthen的扩展联想
Delphi之前已经重载了好多个ifthen函数
Math单元
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer = ): Integer; overload; inline; function IfThen(AValue: Boolean; const ATrue: Int64; const AFalse: Int64 = ): Int64; overload; inline; function IfThen(AValue: Boolean; const ATrue: UInt64; const AFalse: UInt64 = ): UInt64; overload; inline; function IfThen(AValue: Boolean; const ATrue: Single; const AFalse: Single = 0.0): Single; overload; inline; function IfThen(AValue: Boolean; const ATrue: Double; const AFalse: Double = 0.0): Double; overload; inline; function IfThen(AValue: Boolean; const ATrue: Extended; const AFalse: Extended = 0.0): Extended; overload; inline;
StrUtils单元
function IfThen(AValue: Boolean; const ATrue: string; AFalse: string = ”): string; overload; inline;
Delphi从2009之后增加了泛型,那么之前math,strutils单元的ifthen函数有很多种重载形式似乎就可以合并成一个单独的泛型函数了.
type TExtFuns = class
class function IfThen<T>(AValue: Boolean; const ATrue, AFalse: T): T; inline;
end;
class function TExtFuns.IfThen<T>(AValue: Boolean; const ATrue, AFalse: T): T;
begin
if AValue then Result := ATrue else Result := AFalse;
end; //使用示例
var s : string; i : Integer;
// s := TExtFuns.IfThen(True, '条件成立', '条件不成立!');
i := TExtFuns.IfThen(GetTickCount > , , );
从XE3以后扩展了新的Helper语法,可以给任意类型增加扩展函数.就有更方便的技巧了.如下
TBoolHelper = record helper for Boolean
function IfThen<T>(const ATrue, AFalse: T): T; inline;
end; function TBoolHelper.IfThen<T>(const ATrue, AFalse: T): T;
begin
if self then Result := ATrue else Result := AFalse;
end; //使用
var s : string; i : Integer;
// s := True.IfThen('a','b');
i := (gettickcount >).IfThen(, );
//是不是很爽,方便程度不亚于C语言族系的?:语法吧.
end;
XE3之后的SysUtils单元里面内置了TBooleanHelper,TByteBoolHelper,TWordBoolHelper,TLongBoolHelper四个布尔类型的Helper,那么如果易博龙肯把ifthen集成到这四个辅助类上我们用起来就会更方便.只可惜XE5都出了还是没集成在里面。
Delphi新语法和ifthen的扩展联想的更多相关文章
- iOS开发-OC语言 (六)点语法和@property
点语法和@property 知识点 1.setter/getter函数 2.点语法 3.@property语法和属性 ======================================== ...
- (嘎吧)--微软的 C# , IL,CLR, Cup 之间关系以及扩展联想
还是啰嗦下:文章短并不代表文章质量不高.我最喜欢用干货性的以及总结性的语言 让大家明白文章要表达的内容.这一切,都是来自多年对.NET 的一些领悟以及一些理解. 不长篇大论,一本人也没时间,二本人也不 ...
- Go汇编语法和MatrixOne使用介绍
目录 MatrixOne数据库是什么? Go汇编介绍 为什么使用Go汇编? 为什么不用CGO? Go汇编语法特点 操作数顺序 寄存器宽度标识 函数调用约定 对写Go汇编代码有帮助的工具 avo tex ...
- XPath语法和lxml模块
XPath语法和lxml模块 什么是XPath? xpath(XML Path Language)是一门在XML和HTML文档中查找信息的语言,可用来在XML和HTML文档中对元素和属性进行遍历. X ...
- OC第五节 ——点语法和@property
一.setter和getter函数 1.回忆:如何访问对象中的成员变量 2.setter和getter函数的作用 setter 方法: 修改对象的字段/实例变 ...
- Markdown 语法和 MWeb 写作使用说明
---恢复内容开始--- # Markdown 语法和 MWeb 写作使用说明 Markdown 的设计哲学 Markdown 的目標是實現「易讀易寫」. 不過最需要強調的便是它的可讀性.一份使用 M ...
- Markdown语法和MWeb使用说明
Markdown 语法和 MWeb 写作使用说明 开始写博客,首先熟悉一下Markdown,以前过看GitHub里的README.MD,感受到了这种文字排版的简洁美观. 写博客是一种有效的学习总结和分 ...
- Java 5 的新标准语法和用法详解集锦
Java 5 的新标准语法和用法详解集锦 Java 5 的新标准语法和用法详解集锦 (需要在首选项-java-complier-compiler compliance level中设置为java5.0 ...
- Webstorm添加新建.vue文件功能并支持高亮vue语法和es6语法
转载:https://blog.csdn.net/qq_33008701/article/details/56486893 Webstorm 添加新建.vue文件功能并支持高亮vue语法和es6语法 ...
随机推荐
- iOS开发——高级技术&二维码功能的实现
二维码功能的实现 ZBarSDK,一个比较优秀的开源项目,使用起来也很简单. ZBarSDK是一个开源的SDK,可从这里下载到源码,该SDK实现了识别和读取各种条形码,包括EAN-13/UPC-A, ...
- c#_DropdownList Panel Textbox 控件交互使用,有autopostback和没有的区别
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx. ...
- redis的hash操作在集中式session中的应用
在集群部署时,为了高可用性的目的,往往把session进行共享,共享分为两种:session复制和集中式管理. redis在session集中式管理中可以起到比较大的作用. 制约session集中式共 ...
- JQuery实现页面Loading效果
第一步:添加遮罩层和LOADING层 <div class="overlay"></div><div id="AjaxLoading&quo ...
- volley框架详解
Volley可是说是把AsyncHttpClient和Universal-Image-Loader的优点集于了一身,既可以像AsyncHttpClient一样非常简单地进行HTTP通信,也可以像Uni ...
- CentOS 6.4安装搭建Tomcat 7
1.检查java版本信息 java -versionjava version "1.7.0_65"OpenJDK Runtime Environment (rhel-2.5.1.2 ...
- 实现虚拟机上面的linux系统和windows主机的通信
一:配置静态ip 1:使用startx命名切换到图形化用户界面: 2:在“开始”——“系统设置”——“网络”——eth0 将通过dchp自动获取ip改为静态绑定ip ip地址:填入你要给的ip,需要与 ...
- nginx笔记----安装
nginx的安装 ./configure make && make install (一)准备条件: 1.GCC---gun编译器集合 Nginx是一个由C语言编写的程序,因此首先需要 ...
- 关于Apache Commons-Lang的总结
部分转载至:http://linhongyu.blog.51cto.com/6373370/1553329 一.前言 Java码农不识Apache,敲尽一生也枉然.旗下的开源项目众多,各个都是吊炸天. ...
- 设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选
设置checkbox选中,设置radio选中,根据值设置checkbox选中,checkbox勾选 >>>>>>>>>>>>&g ...