4
function a()
{
   return 10
}

$b = 10
write-Host "b = $b"

[int]$b += a
write-Host "b = $b"

[int]$b = a + 10
write-Host "b = $b"

Output for the above script is:

b = 10
b = 20
b = 10

我有 C 编程背景,最近开始用 PS 编程。我试图编写一个简单的程序,它在语句中使用函数的返回值。我对结果感到困惑。以下陈述的工作方式不同。

[int]$b += a
[int]$b = a + 10

有人可以解释一下原因吗?

问候

朱加里

4

2 回答 2

3

对于 C 程序员来说是很奇怪的。

[int]$b = a + 10表示你调用一个有两个参数的函数[int]$b = (a) + 10

使用此功能重试

function a()
{
   write-host $args.count
   return 10
}

您还必须非常小心函数返回的值。

于 2013-09-03T08:37:12.243 回答
0

我怀疑解释器试图将“+ 10”作为参数传递给您的函数;因为您的函数中没有指定参数,所以它们被设置为空。在你的函数调用周围加上括号可以防止这种情况发生,我怀疑它会按照你的意图工作。

[int]$b = (a) + 10
write-Host "b = $b"
于 2013-09-03T08:38:14.170 回答