【问题标题】:PowerShell Math Problem?PowerShell 数学问题?
【发布时间】:2011-05-29 05:23:56
【问题描述】:
function other3($x, $y)
{
    $tmp = $x + $y
    return $tmp
}

$x = 5
$y = 10

$a = other3($x, $y)
Write-Host $a

当它应该返回 15 时,仍然返回 5 10,这是怎么回事?

【问题讨论】:

  • 提示:除非您真的想提前退出函数,否则请避免使用 return 关键字。所有未明确捕获的值都从函数中的 powershell 返回。
  • 我不同意这个评论。我会说避免在函数中使用输出,只构建一个 var 来返回,它被称为结构化编程,代码将更具可读性。它可以是一个讨论线程:o)
  • @jpblanc 欢迎您不同意。隐式返回是函数式编程的原则。生活(和编程)远不止结构化。
  • 我只想说让我们从头开始... Powershell 是一种脚本语言。据我所知,仅在某一点上使用 return 与函数式编程的概念相差甚远。

标签: math powershell


【解决方案1】:

要使用两个参数调用 other3,请去掉括号“()”,例如

$a = other3 $x  $y

您当前调用它的方式实际上是传递一个参数,一个包含两个元素的数组,即 5 和 10。第二个参数是空的(可能默认为 null),这意味着添加什么也不做,您只需返回$x 参数。

【讨论】:

  • 问题已解决,忘记删除逗号
  • 一直犯同样的错误 - powershell 在某些方面与 C# 非常相似,当发生这种情况时,细微的差异真的会让你摸不着头脑。不过还是坚持下去吧。
  • 我没用过C#,我有C/C++、Python、Java背景。
【解决方案2】:

您将列表 (5,10) 传递给参数 $x 并将 $null 传递给 $y。

当函数将 $null 添加到列表中时,您只需返回列表。

在函数中添加一些 write-host 语句应该可以清楚地说明这一点:

function other3($x, $y)
{
    $tmp = $x + $y
    write-host "`x=($x)"
    write-host "`y=($y)"
    return $tmp
}

$x = 5
$y = 10

$a = other3($x, $y)
Write-Host $a

【讨论】:

  • 啊哈,原来如此。明白了
猜你喜欢
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 2022-01-13
  • 2017-11-25
  • 2013-06-21
  • 2010-12-21
  • 1970-01-01
  • 2023-01-25
相关资源
最近更新 更多