我有以下代码:
function printVars($var1, $var2)
{
Write-Host "var1: $var1"
Write-Host "var2: $var2"
}
printVars ('asdf', 'qwer')
它产生了这个结果:
var1: asdf qwer
var2:
我期待着这个:
var1: asdf
var2: qwer
为什么要这样做?如何让它做我想做的事?
答案 0 :(得分:4)
由于('asdf','qwer')
被视为数组,因此$var1
获取数组且$var2
为空。
执行printVars 'asdf' 'qwer'
即使你没有parantheses并且只有逗号,它也是一个数组。
试试这个:
$b ="one","two"
$b.GetType()
答案 1 :(得分:3)
已经提供了正确答案,但对于那些寻找更多信息的人,我从PowerShell快速参考图表中删除了这个。这假设函数f的签名是f($a, $b, $c)
:
因此,可以使用空格分隔的位置参数或与顺序无关的命名的参数调用函数。其他陷阱表明你需要认识到逗号,括号和空格。
如需进一步阅读,请参阅我刚刚在Simple-Talk.com上发表的最新文章Down the Rabbit Hole- A Study in PowerShell Pipelines, Functions, and Parameters。该文章还包含指向快速参考/挂图的链接。
答案 2 :(得分:0)
我现在看到了。我把这个功能叫错了。
应该是这样的:
printVars 'asdf' 'qwer'
报价也可以删除。
虽然看起来像Perl和C这样的大括号语言调用函数就像使用大多数shell调用另一个命令一样。
当我把逗号放在那里时,它将字符串附加到一个字符串中并将其作为第一个参数传递。