我试图弄清楚是什么决定了是否从 PowerShell 函数返回一个值,并且我遇到了一些奇怪的情况。about_return 文档说:
在 PowerShell 中,每个语句的结果都会作为输出返回,即使没有包含 Return 关键字的语句也是如此。
但这似乎掩盖了细节。如果我运行这个:
function My-Function {
1
[System.Console]::WriteLine("Hello")
$null
$true
$false
0
2
}
Run Code Online (Sandbox Code Playgroud)
运行此命令将返回一个数组(并打印“Hello”):
1
True
False
0
2
Run Code Online (Sandbox Code Playgroud)
这意味着它$null不会自动返回。然后我尝试递增,因为我正在函数中使用它:
function My-Function {
$n = 1
$n
$n++
($n++)
-join @(1, 2, 3)
(-join @(1, 2, 3))
}
Run Code Online (Sandbox Code Playgroud)
返回:
1
2
123
123
Run Code Online (Sandbox Code Playgroud)
所以,$n被$n++退回了,但($n++)不是吗?但与另一个运算符 ( -join) 相比,每种情况都是相同的。为什么将括号括起来$n++会阻止它被返回,并且为什么其他运算符没有相同的行为?这更加令人困惑,因为=运算符似乎以相反的方式工作:
function My-Function {
($n = 1)
$n
$n++
($n++)
} …Run Code Online (Sandbox Code Playgroud) 使用 BorderAround 会向控制台发出“True”。
$range = $sum_wksht.Range('B{0}:G{0}' -f ($crow))
$range.BorderAround(1, -4138)
Run Code Online (Sandbox Code Playgroud)
这可以通过使用以下方法之一来克服。
$wasted = $range.BorderAround(1, -4138)
[void]$range.BorderAround(1, -4138)
Run Code Online (Sandbox Code Playgroud)
为什么需要这个?我没有正确创建范围吗?有更好的解决方法吗?