Разделение ("/") в функции - PullRequest
       18

Разделение ("/") в функции

4 голосов
/ 20 октября 2011

Я пытаюсь написать простую функцию деления, но получаю ошибку

PS C:\Users\john> Function Div($x, $y) { $x / $y }
PS C:\Users\john> Div (1, 1)
Method invocation failed because [System.Object[]] doesn't contain a method named 'op_Division'.
At line:1 char:28
+ Function Div($x, $y) { $x / <<<<  $y }
    + CategoryInfo          : InvalidOperation: (op_Division:String) [], RuntimeException
    + FullyQualifiedErrorId : MethodNotFound

В чем моя ошибка? Спасибо

Ответы [ 2 ]

6 голосов
/ 20 октября 2011

Вы вызываете функцию неправильно.Синтаксис Powershell для вызова функции:

Div 1 1

Принимая во внимание, что (1,1) является объектом [].

Если вы хотите предотвратить подобные ошибки использования, объявите функцию как1006 *

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

[Параметр (Обязательный = $ true)] обеспечивает оба значения.И в любом случае деление всегда делает двойное деление в Powershell, даже если заданы целые числа, поэтому принудительное использование типа [double] не остановит целочисленное использование и убедится, что тип ввода соответствует ожидаемому.

0 голосов
/ 20 октября 2011

Вы должны приводить аргументы оператора деления к целым числам в теле функции, в противном случае они будут обрабатываться как строки (даже если они выглядят как целые), а строки не поддерживают оператор /:

[int] $x / [int] $y

...