在Delphi中记录方法和常量参数
发布时间:2020-12-15 04:25:19 所属栏目:大数据 来源:网络整理
导读:看来Delphi编译器不符合const记录参数的时候 涉及“记录方法”. 以前没有试图滥用常规惯例,我有点惊讶 找到编译器接受的代码如下: type TTest = record Field : String; procedure Update; end;procedure TTest.Update;begin Field := Field + '+1';end;pro
看来Delphi编译器不符合const记录参数的时候
涉及“记录方法”. 以前没有试图滥用常规惯例,我有点惊讶 type TTest = record Field : String; procedure Update; end; procedure TTest.Update; begin Field := Field + '+1'; end; procedure DoStuff(const t : TTest); begin ShowMessage(t.Field); t.Update; ShowMessage(t.Field); end; 而如果你试图做一个 附录:这样可以修改声明的编译时常量,如下所示: const cTest : TTest = (Field : '1'); ... cTest.Update; // will show '1' then '1'+'1' ShowMessage(cTest.Field); // will show '1' (because optimized at compile-time) 这是被接受/记录的行为吗?还是只是编译器的缺点? 解决方法
const不会对Delphi中的方法调用造成任何限制,无论是在记录还是类的实例上.所以我不认为方法调用的处理方式不一致.
如果方法无法在作为const参数传递的记录上被调用,那么这几乎可以使方法无法使用方法.这意味着,例如,不能调用属性getter.为了对通过const的这种记录进行限制,需要对C的const成员函数有一个等同的概念.这将允许编译器知道某些方法是非突变的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |