这是一个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
}
但肯定有一种方法可以在一条线上做到这一点吗?
我在这里张贴是因为这也会咬别人。
答案 0 :(得分:8)
正确的电话是
(PickANumber) + 30
原始代码PickANumber + 30
表示使用两个来调用PickANumber
参数+
和30
被PickANumber
忽略。
答案 1 :(得分:3)
为了避免这个陷阱,你可以像这样定义你的功能
function PickANumber()
{
[CmdletBinding()]
param()
12
}
执行PickANumber + 30
时,您将收到错误
PickANumber:找不到接受的位置参数 参数'+'。