如何正确重置递增的计数器?
How to correctly reset an incremented counter?
在我的一个脚本中,我使用了一个计数器,如果特定事件发生,我会逐渐递增该计数器。我使用以下语法来执行此操作:
if ($IndexPositionTrue) {
$CorrectTextbox.Text = $script:countercorrect++
}
现在我正在尝试实现一个按钮,您可以使用该按钮将 $countercorrect
值重置回 0。为此,我设置了一个带有 click_handler:
的按钮
$reset = New-Object System.Windows.Forms.Button
$reset.Add_Click($handler_reset_click)
$form1.Controls.Add($Reset)
$handler_reset_click = {
Reset
}
function Reset {
Clear-Variable countercorrect
}
假设 $countercorrect
值已增加到 5,我使用 Reset
函数。该值确实重置为 0,但在下一个增量之后而不是显示 1,它显示 6。
是我的语法不正确还是我 "resetting" 错误的值?
我认为这是一个范围问题,你能不能像这样修改重置函数:
function Reset {
$script:countercorrect = 0
}
您在 If 语句中引用了 $Script:countercorrect
,但在函数 reset
中引用了 $countercorrect
。如果您认为您在这里使用了错误的范围。
使用函数
function Reset {
Clear-Variable countercorrect -Scope Script
}
在我的一个脚本中,我使用了一个计数器,如果特定事件发生,我会逐渐递增该计数器。我使用以下语法来执行此操作:
if ($IndexPositionTrue) {
$CorrectTextbox.Text = $script:countercorrect++
}
现在我正在尝试实现一个按钮,您可以使用该按钮将 $countercorrect
值重置回 0。为此,我设置了一个带有 click_handler:
$reset = New-Object System.Windows.Forms.Button
$reset.Add_Click($handler_reset_click)
$form1.Controls.Add($Reset)
$handler_reset_click = {
Reset
}
function Reset {
Clear-Variable countercorrect
}
假设 $countercorrect
值已增加到 5,我使用 Reset
函数。该值确实重置为 0,但在下一个增量之后而不是显示 1,它显示 6。
是我的语法不正确还是我 "resetting" 错误的值?
我认为这是一个范围问题,你能不能像这样修改重置函数:
function Reset {
$script:countercorrect = 0
}
您在 If 语句中引用了 $Script:countercorrect
,但在函数 reset
中引用了 $countercorrect
。如果您认为您在这里使用了错误的范围。
使用函数
function Reset {
Clear-Variable countercorrect -Scope Script
}