我正在尝试编写一个简单的除法函数,但是我收到错误
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
我的错误是什么?感谢
答案 0 :(得分:6)
您正在错误地调用该函数。函数调用的Powershell语法是:
Div 1 1
而(1,1)是一个Object []。
如果你想防止这样的使用错误,请将函数声明为:
Function Div([Parameter(Mandatory=$true)][double]$x, [Parameter(Mandatory=$true)][double]$y) { $x / $y }
[Parameter(Mandatory = $ true)]确保给出两个值。并且除非总是给出整数,否则除非总是在Powershell中执行双除法,因此强制类型[double]不会停止整数使用并确保输入类型符合您的预期。
答案 1 :(得分:-1)
您应该将除法运算符的参数转换为函数体中的int,否则 它们将被视为字符串(即使它们看起来像int),字符串不支持/运算符:
[int] $x / [int] $y