除法("/")在功能上

Loo*_*oom 4 powershell function syntax-error argument-passing

我正在尝试编写一个简单的除法函数,但是我得到了一个错误

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
Run Code Online (Sandbox Code Playgroud)

我的错是什么?谢谢

Voi*_*tar 6

您正在调用该函数.函数调用的Powershell语法是:

Div 1 1
Run Code Online (Sandbox Code Playgroud)

而(1,1)是一个Object [].

如果你想防止这样的使用错误,请将函数声明为:

Function Div([Parameter(Mandatory=$true)][double]$x, [Parameter(Mandatory=$true)][double]$y) { $x / $y }
Run Code Online (Sandbox Code Playgroud)

[Parameter(Mandatory = $ true)]确保给出两个值.并且除非总是给出整数,否则除非总是在Powershell中执行双除法,因此强制类型[double]不会停止整数使用并确保输入类型符合您的预期.