4 Stimmen

Division ("/") in Funktion

Ich versuche, eine einfache Funktion der Division zu schreiben, aber ich bekomme einen Fehler

PS C:\Benutzer\john> Funktion Div($x, $y) { $x / $y }
PS C:\Benutzer\john> Div (1, 1)
Der Methodeaufruf schlug fehl, da [System.Object[]] keine Methode namens 'op_Division' enthält.
In Zeile:1 Zeichen:28
+ Funktion Div($x, $y) { $x / <<<<  $y }
    + KategorieInfo          : InvalidOperation: (op_Division:String) [], RuntimeException
    + Vollständige Fehler-ID : MethodNotFound

Was ist mein Fehler? Danke

0 Stimmen

Möglicher Duplikat von Powershell - Mehrere Funktionsparameter

6voto

VoidStar Punkte 4896

Sie rufen die Funktion falsch auf. Die Powershell-Syntax für die Funktionsaufruf lautet:

Div 1 1

Wohingegen (1,1) ein Object[] ist.

Wenn Sie Fehler wie diesen verhindern möchten, deklarieren Sie die Funktion wie folgt:

Function Div([Parameter(Mandatory=$true)][double]$x, [Parameter(Mandatory=$true)][double]$y) { $x / $y }

das [Parameter(Mandatory=$true)] stellt sicher, dass beide Werte angegeben werden. Und die Division erfolgt in Powershell immer als Double-Division, selbst wenn Ganzzahlen angegeben sind. Daher verhindert die Festlegung des Typs [double] nicht die Verwendung von Ganzzahlen und stellt sicher, dass der Eingabetyp dem entspricht, was Sie erwarten.

-1voto

Kilian Foth Punkte 13440

Sie sollten die Argumente des Divisionsoperators in Ihrem Funktionskörper in ints umwandeln, ansonsten werden sie als Strings behandelt (auch wenn sie wie ints aussehen), und Strings unterstützen den / Operator nicht:

[int] $x / [int] $y

0 Stimmen

Funktion Div($x, $y) { [int] $x / [int] $y } produziert den Fehler Kann den Wert vom Typ "System.Object[]", der vom Typ "System.Object[]" ist, nicht in den Typ "System.Int32" konvertieren. Ich glaube, dass VoidStar die richtige Antwort gegeben hat.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X