除法(“/”)在功能上

时间:2011-10-19 21:22:27

标签: function powershell 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

我的错误是什么?感谢

2 个答案:

答案 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