这是一个powershell脚本:
function PickANumber()
{
12
}
function GetTheAnswer()
{
PickANumber + 30
}
$answer = GetTheAnswer
write-output "The answer is $answer"
该脚本的输出为:
The answer is 12
据我猜测,发生这种情况是因为powershell函数调用的参数或逗号之间没有括号,因此
PickANumber + 30
被解析为PickANumber('+', 1)
而不是PickANumber() + 1
。这不是一个错误,未使用的args会被简单地忽略(如JavaScript)。如果稍加更改,答案是42:
function GetTheAnswer()
{
$a = PickANumber
$a + 30
}
但是肯定有一种方法可以做到这一点吗?
我要在这里发帖,因为这也会咬人。
最佳答案
为了避免这种陷阱,您可以像这样定义函数
function PickANumber()
{
[CmdletBinding()]
param()
12
}
执行
PickANumber + 30
时,您会收到错误消息PickANumber : A positional parameter cannot be found that accepts argument '+'.
关于powershell - Powershell在函数调用后忽略表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16506899/