FuncOne() - 和 FuncTwo() 不工作
FuncOne() -and FuncTwo() not working
这是我的代码:
if (FuncOne($valOne) -and FuncTwo($valTwo)) {
...
}
当这两个函数的计算结果为 $false
时,if 语句中的代码仍然执行。这是为什么?这也没有按预期工作:
if (FuncOne($valOne) -eq $true -and FuncTwo($valTwo) -eq $true) {
...
}
当这样写时,它按预期工作。
$a = FuncOne($valOne)
$b = FuncTwo($valTwo)
if($a -and $b) {
...
}
怎么回事?
您实际上需要将函数放在括号中才能调用它:
if ((FuncOne($valOne)) -and (FuncTwo($valTwo))) {
...
}
这是语法问题。
在 PowerShell 中调用函数的正确语法不是:
functionName($arg1[,$arg2,$arg3])
而是:
functionName [-parameterName1] $arg1 [[-parameterName2] $arg2]
现在,让我们将其应用于您的 if()
示例表达式:
FuncOne $valOne -and FuncTwo $valTwo
您会注意到显式参数名称 (-ParameterName
) 和运算符 (-and
) 完全无法区分 - 解析器无法判断 -and
是否应该被解释为参数名称或运算符。此外,字符串文字 FuncTwo
也可以解释为参数参数,这正是发生的情况。
为了让解析器知道您打算将表达式视为两个单独的表达式,强制计算顺序为()
:
if ((FuncOne $valOne) -and (FuncTwo $valTwo)) {
# They both returns a truthy value
}
这是我的代码:
if (FuncOne($valOne) -and FuncTwo($valTwo)) {
...
}
当这两个函数的计算结果为 $false
时,if 语句中的代码仍然执行。这是为什么?这也没有按预期工作:
if (FuncOne($valOne) -eq $true -and FuncTwo($valTwo) -eq $true) {
...
}
当这样写时,它按预期工作。
$a = FuncOne($valOne)
$b = FuncTwo($valTwo)
if($a -and $b) {
...
}
怎么回事?
您实际上需要将函数放在括号中才能调用它:
if ((FuncOne($valOne)) -and (FuncTwo($valTwo))) {
...
}
这是语法问题。
在 PowerShell 中调用函数的正确语法不是:
functionName($arg1[,$arg2,$arg3])
而是:
functionName [-parameterName1] $arg1 [[-parameterName2] $arg2]
现在,让我们将其应用于您的 if()
示例表达式:
FuncOne $valOne -and FuncTwo $valTwo
您会注意到显式参数名称 (-ParameterName
) 和运算符 (-and
) 完全无法区分 - 解析器无法判断 -and
是否应该被解释为参数名称或运算符。此外,字符串文字 FuncTwo
也可以解释为参数参数,这正是发生的情况。
为了让解析器知道您打算将表达式视为两个单独的表达式,强制计算顺序为()
:
if ((FuncOne $valOne) -and (FuncTwo $valTwo)) {
# They both returns a truthy value
}