【问题标题】:Return values of functions函数的返回值
【发布时间】:2013-04-11 18:05:22
【问题描述】:

我有两个功能:

Function1
{
    Function2
    return 1
}

Function2
{
    return 0
}

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

【问题讨论】:

  • 我真的不明白你在问什么。您期望 Function1 返回什么以及它返回什么?
  • 在执行 Function1 后它应该返回值 1 但它返回值 0。
  • 你如何调用 Function1 以及如何检测它的返回值?

标签: function powershell return-value


【解决方案1】:

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

【讨论】:

  • 谢谢!我遇到了同样的问题。所以你知道有什么方法可以实际返回你想要的东西,丢弃其他输出。输出很难以您的方式捕获,因为您不知道语句是否会返回任何值。
  • 实际代码将决定最好的方法。如果您有示例要发布,那将很有帮助。
【解决方案2】:

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

【讨论】:

  • 不,它返回 0 并继续运行..如果 m 没有错,Funtion1 从 Function2 调用返回 0,它会忽略返回 1...这可能吗...我错过了什么...但是当我将 Funtion1 中的 Function2 cqll 分配给一个变量时,功能 1 正确退出...这种奇怪的行为...是否有返回值或其他东西的优先级...
猜你喜欢
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 2016-08-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-28
  • 1970-01-01
相关资源
最近更新 更多