Hier ist ein Powershell-Skript:Powershell ignoriert Ausdruck nach Funktionsaufruf
function PickANumber()
{
12
}
function GetTheAnswer()
{
PickANumber + 30
}
$answer = GetTheAnswer
write-output "The answer is $answer"
Die Ausgabe dieses Skripts ist:
The answer is 12
Soweit ich Vermutung nennen, dies geschieht, weil Powershell Funktionsaufrufe Sie müssen keine Klammern um die Argumente oder Kommata zwischen ihnen haben, daher wird PickANumber + 30
als etwas wie PickANumber('+', 1)
anstelle von PickANumber() + 1
geparst. Und das ist kein Fehler, die unbenutzten Argumente werden einfach ignoriert (wie bei JavaScript).
Wenn Sie etwas ändern, dann ist die Antwort 42:
function GetTheAnswer()
{
$a = PickANumber
$a + 30
}
Aber sicher gibt es eine Möglichkeit, dies auf einer Linie zu tun?
Ich poste hier, weil dies auch jemand anderen beißen wird.
Großartig, dies führt dazu, dass der falsche Code einen Fehler gibt. Kombiniere nun mit der anderen Antwort "(PickANumber) + 30" um den Fehler zu beheben. – Anthony