Delphi中如何实现跳过默认参数,改写为长尾?
- 内容介绍
- 文章标签
- 相关推荐
本文共计391个文字,预计阅读时间需要2分钟。
没有找到具体的伪原创方法,以下是对您提供内容的简化
若要跳过默认参数,可使用以下自定义方法声明:`procedure MyProc1(var isAttr1: Boolean=FALSE; var isAttr2: Boolean=FALSE; var isAttr3: Boolean=FALSE);` 但我无法像这样调用函数:`Self.MyProc1(, , 'At')`。
有没有办法跳过默认的参数,假设我的方法声明是这样的:procedure MyProc1(var isAttr1: Boolean = FALSE; var isAttr2: Boolean = FALSE; var isAttr3: Boolean = FALSE);
我无法像这样调用函数:
Self.MyProc1( , , Attr3);
因为我不想要不必要的var声明,同时我想要最后一个param返回值(它是一个var类型)
提前感谢您的帮助.
对不起,你不能这样做.更有甚者,你不能使用默认的var参数和isAttr1一样.如果您的参数具有足够不同的参数类型,那么您可以使用overloaded methods作为默认参数的替代,这是我个人更喜欢的技术.但是你的参数都是布尔值的,所以你不能在这里做.
其他海报建议如下:
procedure Myfunc1(var isAttr1, isAttr2, isAttr3: Boolean); overload; procedure Myfunc1(var isAttr3: Boolean); overload;
这将编译和工作,但将违背最少惊喜的原则.对于像这样的重载过程,对于只有一个参数的过程,您可以期望该单个参数是具有多个参数的过程的第一个参数.换句话说,你会期望:
procedure Myfunc1(var isAttr1, isAttr2, isAttr3: Boolean); overload; procedure Myfunc1(var isAttr1: Boolean); overload;
本文共计391个文字,预计阅读时间需要2分钟。
没有找到具体的伪原创方法,以下是对您提供内容的简化
若要跳过默认参数,可使用以下自定义方法声明:`procedure MyProc1(var isAttr1: Boolean=FALSE; var isAttr2: Boolean=FALSE; var isAttr3: Boolean=FALSE);` 但我无法像这样调用函数:`Self.MyProc1(, , 'At')`。
有没有办法跳过默认的参数,假设我的方法声明是这样的:procedure MyProc1(var isAttr1: Boolean = FALSE; var isAttr2: Boolean = FALSE; var isAttr3: Boolean = FALSE);
我无法像这样调用函数:
Self.MyProc1( , , Attr3);
因为我不想要不必要的var声明,同时我想要最后一个param返回值(它是一个var类型)
提前感谢您的帮助.
对不起,你不能这样做.更有甚者,你不能使用默认的var参数和isAttr1一样.如果您的参数具有足够不同的参数类型,那么您可以使用overloaded methods作为默认参数的替代,这是我个人更喜欢的技术.但是你的参数都是布尔值的,所以你不能在这里做.
其他海报建议如下:
procedure Myfunc1(var isAttr1, isAttr2, isAttr3: Boolean); overload; procedure Myfunc1(var isAttr3: Boolean); overload;
这将编译和工作,但将违背最少惊喜的原则.对于像这样的重载过程,对于只有一个参数的过程,您可以期望该单个参数是具有多个参数的过程的第一个参数.换句话说,你会期望:
procedure Myfunc1(var isAttr1, isAttr2, isAttr3: Boolean); overload; procedure Myfunc1(var isAttr1: Boolean); overload;

