为什么这个表达式返回 False 而不是 True ?
$true -or $false -and $false
-and-or正如Microsoft Powershell 文档所确认的那样,应优先于.
但看起来表达式被评估为($true -or $false) -and $false而不是$true -or ($false -and $false)!
有人可以向我解释我在这里缺少什么吗?
我知道 Powershell 数组是不可变的对象,并且像所有对象一样,通过引用函数来传递。但是我在下面的例子中不明白为什么$b没有与$a.
唯一的区别是它$b不是强类型的。这是否意味着从toTest-ByRefArray转换,实际上创建了一个新对象,这可以解释为什么在这个新对象上所做的更改对原始对象没有影响?$b[object[]][string[]]Test-ByRefArray
function Test-ByRefArray {
param (
[string[]] $Array1,
[string[]] $Array2
)
$Array1[0] = "Modified by Test-ByRefArray"
$Array2[0] = "Modified by Test-ByRefArray"
}
function Test-Array {
[string[]] $a = 'hello', 'world'
$b = 'hello', 'world'
$c = $a #by ref: if a is updated, so is $c
Test-ByRefArray -Array1 $a -Array2 $b
$a -join ", "
$b -join ", "
$c -join ", "
}
Test-Array …Run Code Online (Sandbox Code Playgroud) powershell ×2