// ......\Demos\DelphiWin32\VCLWin32\ActiveX\OleAuto\SrvComp\Word\ // Main.pas,line 109 Docs.Add(NewTemplate := True); // note the assignment
我似乎无法重现这种类型的参数传入我自己的代码,我从来没有看到有人使用它.所以这些是我的问题:
>我可以在“普通”方法中使用它,并且它是“Delphi语言”的一部分,还是这些编译器为自动化对象而使用?
>为了能够使用这些,需要什么?
>这是什么类似C#4的命名和可选参数?
Additional information: I usually pass
records or simple classes when there
are many optional parameters to
methods,but it looks like I wouldn’t
need that with this Syntax. I’m aware
of default parameter values,but their
usefulness is limited because you
cannot provide any parameters to the
right of an omitted one. In JavaScript
I’m using this named parameter style
all the time (be it with different
Syntax),and it’s powerful.
解决方法
我不认为从命名参数中寻找的便利性将超过您通过使用IDispatch.Invoke
方法将每个方法调用路由到的所需性能.呼叫也可能需要先使用GetIDsOfNames
.你没有看到更多的代码,因为后期绑定通常是人们试图避免的.尽可能使用早期绑定,以避免查找调度ID和间接方法调用的成本.
Delphi通过允许默认值来支持非自动化代码中的可选参数.只要您也省略所有后续参数的实际参数,您可以省略具有默认值的任何参数的实际参数 – 编译器确保函数的声明允许.
我认为可选参数被高估了.他们为(1)人编写代码节省时间,但不能为(许多)阅读代码的人节省时间.任何阅读它的人都需要知道任何未指定参数的默认值,所以您也可以直接提供所有的值.