1

我有两个功能:

Function1
{
    Function2
    return 1
}

Function2
{
    return 0
}

执行后Function1它应该返回1,但它返回0。这是为什么?

4

2 回答 2

11

PowerShell“返回值”实际上并不像您习惯使用其他语言的方式那样工作。要记住的重要一点是所有输出都被捕获并返回。该return语句基本上只是一个逻辑退出点。

例如:

Function Return-Zero {
    return 0
}

Function Return-One {
    Return-Zero
    return 1
}

Return-One

由于 的返回值Return-Zero未存储在变量中,因此它是输出的一部分。运行上面将有输出:

0
1

...这可能是你得到的。如果将返回值存储Return-Zero在变量中,则它不是输出的一部分。

Function Return-Zero {
    return 0
}

Function Return-One {
    $var = Return-Zero
    return $var
}

Return-One

上面的输出是0.

于 2013-04-11T18:34:49.313 回答
0

你确定它继续运行,并且它只返回 0 吗?它应该返回 0(函数 2 的返回值),然后返回 1,然后退出。

于 2013-04-11T18:26:13.273 回答