是否可以编写NetBeans代码模板来使用函数头中声明的所有参数(例如,使用这些变量调用另一个函数)?参数的数量可以不同,因此它似乎并不容易.
例如,有时我想打印函数中的所有参数以进行调试.
这是一个示例用法(dsm()根据参数的数量多次调用函数):
function testModule_theme($existing, $type, $theme, $path) {
dsm($existing, '$existing in ' . __FUNCTION__ . '()');
dsm($type, '$type in ' . __FUNCTION__ . '()');
dsm($theme, '$theme in ' . __FUNCTION__ . '()');
dsm($path, '$path in ' . __FUNCTION__ . '()');
return array(
// ......
);
}
Run Code Online (Sandbox Code Playgroud)
这是另一个:
function testModule_block_view($delta = '') {
dsm($delta, '$delta in ' . __FUNCTION__ . '()');
$block = array();
// .....
return $block;
}
Run Code Online (Sandbox Code Playgroud)
如您所见,第一种情况有4个参数,第二种情况只有1个.参数的名称也会根据给定的函数而改变.
我已经编写了一个使用dsm()函数的代码模板:

dsm($$${VARIABLE newVarName default="variables"}, '$$${VARIABLE} in '.__FUNCTION__.'()');
Run Code Online (Sandbox Code Playgroud)
这样我只需输入ddsm,点击Tab,然后我必须输入变量的确切名称.所以它将打印出以下内容:
dsm($variables, '$variables in ' . __FUNCTION__ . '()');
Run Code Online (Sandbox Code Playgroud)
之后,我可以更改variables部件,并键入另一个名称,并在字符串中使用相同的名称.一个例子:

但是我仍然懒得键入那些东西:D,我很好奇在NetBeans中使用代码模板时是否有办法使用给定函数的所有参数.
这看起来确实很难。如果您知道在声明函数时将使用宏,则可以使用如下模板:
// shortcut dsmfun1
function ${FUNCTION_NAME}($$${PAR1}) {
dsm($$${PAR1}, '$$${PAR1} in ' . __FUNCTION__ . '()');
${selection}${cursor}
}
...
// shortcut dsmfun4
function ${FUNCTION_NAME}($$${PAR1}, $$${PAR2}, $$${PAR3}, $$${PAR4}) {
dsm($$${PAR1}, '$$${PAR1} in ' . __FUNCTION__ . '()');
dsm($$${PAR2}, '$$${PAR2} in ' . __FUNCTION__ . '()');
dsm($$${PAR3}, '$$${PAR3} in ' . __FUNCTION__ . '()');
dsm($$${PAR4}, '$$${PAR4} in ' . __FUNCTION__ . '()');
${selection}${cursor}
}
Run Code Online (Sandbox Code Playgroud)
几个模板可以让您非常快速地声明,并且您只需键入参数名称一次。
如果您稍后添加这些宏,您可能需要查看此文档并实现您想要的行为(尽管这可能非常棘手)。
希望这可以帮助!