powershell - 方法调用失败,因为 [System.Object[]] 不包含名为“op_Division”的方法
问题描述
我正在尝试创建一个定价函数,它需要一个usd
价格和一个eur
价格并进行一些计算。但是,尝试运行它时出现以下错误:
方法调用失败,因为 [System.Object[]] 不包含名为“op_Division”的方法。在行:11 字符:5
代码:
function Get-Pricing($USD, $EUR) {
[hashtable]$Return = @{}
$USDGBP = [math]::Round((Invoke-RestMethod "https://api.exchangeratesapi.io/latest?base=USD").rates.GBP,2)
$EURGBP = [math]::Round((Invoke-RestMethod "https://api.exchangeratesapi.io/latest?base=EUR").rates.GBP,2)
$USDEx = ($USD * $USDGBP)
$EUREx = ($EUR * $EURGBP)
$ReturnedPrice = ((( $EUREx + 0.25 ) * 0.32 ) + $EUREx )
$PriceIndex = (((( $USDEx / $ReturnedPrice ) * 0.5 ) + (( $EUREx / $ReturnedPrice ) * 1.5 ) + 1 ) / 3)
$PriceCM = (( $ReturnedPrice / $EUREx ) * $PriceIndex )
$Return.PriceIndex = $PriceIndex
$Return.PriceCM = $PriceCM
Return $Return
}
[float]$a = 23.83
[float]$b = 16.11
Write-Host $a -ForegroundColor Red
Write-Host $b -ForegroundColor Red
$Pricing = Get-Pricing($a, $b)
Write-Host "A: "$Pricing.PriceIndex -ForegroundColor Cyan
Write-Host "B: "$Pricing.PriceCM -ForegroundColor Cyan
解决方案
PowerShell 的命令调用语法与其他具有 C 风格语法的语言略有不同,您必须按名称绑定参数参数:
Get-Pricing -USD $a -EUR $b
或按位置:
Get-Pricing $a $b
但是当你这样做时:
Get-Pricing ($a, $b)
\______/
|
# PowerShell just sees a single argument here
...您实际上是将 2 项数组传递给$USD
参数,而没有传递给$EUR
参数。
如果您显式键入参数,运行时绑定器将能够告诉您出了什么问题:
PS C:\> function Get-Pricing([float]$USD, [float]$EUR) {
>> # ...
>> }
PS C:\> Get-Pricing($a,$b)
Get-Pricing : Cannot process argument transformation on parameter 'USD'. Cannot convert the "System.Object[]" value of type
"System.Object[]" to type "System.Single".
At line:1 char:12
+ Get-Pricing($a,$b)
+ ~~~~~~~
+ CategoryInfo : InvalidData: (:) [Get-Pricing], ParameterBindingArgumentTransformationException
+ FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-Pricing
推荐阅读
- c - 当程序在 C 中退出时分配的内存会发生什么
- javascript - 使用 js 在我的硬盘上保存 JSON 对象
- angular - Angular sidenav 似乎在单击的每个链接上都会刷新
- ios - 使用 react-native-crypto 的 createDiffieHellman 需要很长时间
- python - 仅在键相同的情况下删除python中的重复对
- c++ - 如何在 C++ 中更改特定的坐标向量?
- c++ - 带超时的终端输入(线程 + 定时器 + cin)
- java - 如何在火花中使用 sedona spark sql 或 geo spatail
- postgresql - PostgreSQL 在关闭数据源连接时“忘记”默认模式
- java - 将信息从 servlet 传递到 jsp 文件时出错