delphi – 从Generic Container中检索TProc
发布时间:2020-12-15 04:12:31 所属栏目:大数据 来源:网络整理
导读:刚刚发现了一些有趣的东西 var Queue : TQueue TProc; MyProc : TProc;...MyProc := Queue.Dequeue; 我想你在这里看到了什么意思.但是,编译器认为我想在MyProc中存储Queue.Dequeue方法(键入“对象的过程”)并报告错误 E2010 Incompatible Types: 'TProc' und
刚刚发现了一些有趣的东西
var Queue : TQueue <TProc>; MyProc : TProc; ... MyProc := Queue.Dequeue; 我想你在这里看到了什么意思.但是,编译器认为我想在MyProc中存储Queue.Dequeue方法(键入“对象的过程”)并报告错误 E2010 Incompatible Types: 'TProc' und 'Procedure of object' 我想出的解决方法是这样的 MyProc := TProc (Pointer (Queue.Dequeue)); 有更优雅的解决方案吗? 解决方法
关于名称“Dequeue”是指函数本身还是函数的返回值,存在一些语法模糊性.而且由于你正在处理一个匿名方法指针,你可以指定一个正常的函数,它试图将其解释为函数赋值,而不是函数结果赋值.将它转换为指针是错误的解决方案,因为这会强制执行函数分配,这会在您尝试调用MyProc时导致各种有趣的错误.
修复它的正确方法是消除语法歧义.在Dequeue之后放置一个空括号,以便编译器确定您正在调用该函数而不是简单地通过名称引用它,然后它将起作用. MyProc := Queue.Dequeue(); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |