variables - 两个警告“此局部变量与全局变量同名”和“没有匹配 IF 的 ELSE”
问题描述
我收到两个奇怪的警告。
- 一种是“此局部变量与全局变量同名”,指的是
wx
,wy
,ww
,wh
。 - 另一个是“
ELSE
with 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
知道为什么会这样吗?
解决方案
如果你想使用传统风格的 if 语句(请不要),你不能从 if 语句的同一行开始你的大括号。您必须将起始大括号{
放下一行。
但是请像这样使用现代表达风格的 if 语句:
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)
}
另外,我个人认为这种支架风格很恶心,但当然这只是个人喜好哈哈。
但是以防万一您不知道,您可以从一个衬里 if/else 语句中省略大括号:
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)
}
编辑:哦,看来你编辑了你的帖子。我在你编辑之前就开始打字了,但后来我不得不去做点什么。
无论如何,我的回答应该能回答你的问题。
推荐阅读
- r - DolphinDB 中是否有任何简单的方法来完成 R 中的 **match** 函数?
- python-3.x - 从python中的类型名称调用静态方法有什么问题吗?
- php - 如果 WooCommerce 购物车页面上没有应用优惠券,则隐藏优惠券折扣
- regex - 如何使用 bash 脚本中的正则表达式或 grep 检查文件名列表中的特定文件是否存在于目录中
- android - 在设置中启动应用程序信息时应用程序崩溃
- c# - 仅当属性不为空 C# 时才将属性添加到匿名类型
- web-scraping - 如何在 subreddit 数据抓取中应用时间限制?
- r - 具有多个变量的线性回归模型引发错误
- sequelize.js - 如果条件未找到值,如何返回默认值
- python - 当窗口调整大小时,动态调整 tkinter 窗口上的所有小部件的大小