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 + 102 つのパラメーターを使用して関数を呼び出すことを意味します。[int]$b = (a) + 10

この関数を使用して再試行します

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

また、関数によって返される値にも細心の注意を払う必要があります。

于 2013-09-03T08:37:12.243 に答える
0

インタープリターが「+ 10」をパラメーターとして関数に渡そうとしていると思われます。関数にパラメーターが指定されていないため、null として設定されます。関数呼び出しを括弧で囲むと、これが防止され、意図したとおりに機能すると思われます。

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