delphi新语法 *****
关于delphi XE 新语法及性能的提高
for…in…语句
在Delphi2005中,新增加了一个非常有用的语句,这个特性在其他很多语言中都有,就是著名的foreach循环,越来越多的人发现这个有用的东西了,也越来越多的语言在编译器层面直接加入了对这个的支持了。
Delphi的编译器在集合类型,数组类型,字符串类型以及提供了GetEnumerator方法的类提供了for…in…的直接支持。
集合类型:
var chars:set of char;
begin
end;
数组类型:
type
const
var n:TNumber;
begin
end;
字符串类型:
var S:String;C:Char;
begin
end;
在VCL中,已经有如下类型已经提供了GetEnumerator方法:
TList
TCollection
TStrings
TInterfaceList
TComponent
TMenuItem
TCustomActionList
TFields
TListItems
TTreeNodes
TToolBar
-----------------------------
1、对齐
2、字符串
赋值使用注意事项如下:
3、内存分配
4、抖动
2006新特性
1、操作符重载
2、类支持strict严格限制
3、类支持
4、类支持类属性
5、类支持Static类静态方法
6、类可以嵌套定义
7、使用Sealed产生密封类
8、使用final产生终结方法
看看Delphi重载了多少个ifthen函数.
Math单元
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer= 0): Integer; overload; inline;
function IfThen(AValue: Boolean; const ATrue: Int64; const AFalse: Int64 =0): Int64; overload; inline;
function IfThen(AValue: Boolean; const ATrue: UInt64; const AFalse: UInt64 =0): 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
class function TExtFuns.IfThen(AValue: Boolean; const ATrue, AFalse: T): T;
begin
end;
使用
var
还有更便捷的办法,从XE3以后扩展了新的Helper语法,可以给任意类型增加扩展函数.就有更方便的技巧了.
TBoolHelper = record helper for Boolean
end;
function TBoolHelper.IfThen(const ATrue, AFalse: T): T;
begin
end;1
//使用
var
end;
XE3之后的SysUtils单元里面内置了TBooleanHelper,TByteBoolHelper,TWordBoolHelper,TLongBoolHelper四个布尔类型的Helper,那么如果易博龙肯把ifthen集成到这四个辅助类上我们用起来就会更方便.
TNewClass = class(TObject)