【发布时间】:2021-01-17 01:55:53
【问题描述】:
我收到两个奇怪的警告。
- 一个是“这个局部变量与全局变量同名”,
指的是
wx、wy、ww、wh。 - 另一个是“
ELSEwith no matchingIF”,指的是两个if-else语句。
这是整个脚本。
#NoEnv
#Warn
SendMode Input
SetWorkingDir %A_ScriptDir%
screen_scaling_factor := A_ScreenDPI/96
^p::mouse_move_win(200,300)
mouse_move_win(x,y,horizontal:="left",vertical:="top",mouse_click:=""){
wingetpos,wx,wy,ww,wh,a
global screen_scaling_factor
if horizontal="left"{
x1 := wx + x * screen_scaling_factor
}else{
x1 := wx + ww - x * screen_scaling_factor
}
if vertical="top"{
y1 := wy + y * screen_scaling_factor
}else{
y1 := wy + wh - y * screen_scaling_factor
}
DllCall("SetCursorPos", int, x1, int, y1)
}
-
当我添加
local作为函数的第一行以启用“强制本地模式”时,第一个警告消失了。 -
当我在 if 条件中添加括号或删除它后面的花括号时,如下所示,第二个警告消失了。
if (horizontal="left"){
x1 := wx + x * screen_scaling_factor
}else{
x1 := wx + ww - x * screen_scaling_factor
}
或
if horizontal="left"
x1 := wx + x * screen_scaling_factor
else
x1 := wx + ww - x * screen_scaling_factor
知道为什么会这样吗?
【问题讨论】:
标签: variables debugging scope conditional-statements autohotkey