这是可选参数的实现。它用于提供一个 API,如果您在没有可选参数的情况下调用它,它将以正常(最好)默认值进行:
String.splitByCharacterType(text); // splits the normal way
String.splitByCharacterType(text,CAMEL_CASE); // splits the alternative way
注意:我从未使用过 Apache StringUtils,所以我上面的示例可能是错误的,但这只是为了说明用例。
在某些语言(例如 C++)中,该语言直接提供语法来支持此用例:
char*[] splitByCharacterType(char* text, bool camelCase = 0) {
// ...
}
在其他既没有函数重载也没有可选参数的语言中,可以使用可变参数来实现相同的用例。例如,在 javascript 中,您可以这样做:
function splitByCharacterType (text) {
var camelCase = false;
if (arguments.length > 1 && arguments[1] == true) camelCase = true;
// ...
}
在某些语言中,您可以使用少于预期数量的参数调用函数,并且未指定的参数将简单地被赋予 null 或 undefined 的值。例如,在 javascript 中,您也可以这样做:
function splitByCharacterType (text, camelCase) {
if (camelCase != undefined) {
// ..
}
else {
// ..
}
}
可选参数的概念本质上类似于控制台应用程序的命令行参数。例如:
ls
上面的调用会生成您最想要的输出,但您也可以这样做:
ls -l
在您需要更多信息的时候。