Function 为什么不能使用PowerShell在if语句中组合变量和函数?

Function 为什么不能使用PowerShell在if语句中组合变量和函数?,function,variables,powershell,if-statement,Function,Variables,Powershell,If Statement,运行: $a=“HelloWorld” 如果($a-和b){写主机“helloworld”} 函数b{返回“HelloWorld”} 返回: 位于C:\Users\r\Desktop\test.ps1:24 char:12 +如果($a-和b){写主机“helloworld”} + ~ 必须在“-and”运算符后面提供值表达式。 在C:\Users\r\Desktop\test.ps1:24 char:13 +如果($a-和b){写主机“helloworld”} +

运行:

$a=“HelloWorld”
如果($a-和b){写主机“helloworld”}
函数b{返回“HelloWorld”}
返回:

位于C:\Users\r\Desktop\test.ps1:24 char:12
+如果($a-和b){写主机“helloworld”}
+            ~
必须在“-and”运算符后面提供值表达式。
在C:\Users\r\Desktop\test.ps1:24 char:13
+如果($a-和b){写主机“helloworld”}
+             ~
表达式或语句中出现意外标记“b”。
在C:\Users\r\Desktop\test.ps1:24 char:13
+如果($a-和b){写主机“helloworld”}
+             ~
在“if”语句中的表达式后缺少结尾“)”。
在C:\Users\r\Desktop\test.ps1:24 char:14
+如果($a-和b){写主机“helloworld”}
+              ~
表达式或语句中出现意外标记“)”。
+CategoryInfo:ParserError:(:)[],ParseException
+FullyQualifiedErrorId:ExpectedValueExpression
解决方法

if($a){
如果(b){
写入主机“helloworld”
}
}
结果:

helloworld

所有关于订单的信息。以下是解决方案:

函数b{返回“HelloWorld”}
$a=“HelloWorld”
if($a-和(b)){写主机“helloworld”}
第一点:函数需要在您尝试调用它时定义好。如果定义在调用之后,它将失败,因为它还不存在


第二点:在尝试与函数进行比较之前,需要计算函数返回的值,因此需要在调用周围使用括号,以确保在逻辑操作之前执行该函数。

是的,Powershell是一种解释(非编译)语言,这意味着在您可以引用它之前,必须存在一些东西,因为解析器是按顺序运行文件的。@JNK,实际上不是关于解释/编译的(例如,Python是编译的,但会显示相同的行为)相反,这是因为函数是在动态名称空间中查找的,因此您可以随意添加/删除/重新定义它们,而调用时的当前定义才是最重要的。