You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AutoHotkey中`if ... in`语句是否可与左大括号`{`同行书写且不影响代码运行?

问题原因

AutoHotkey v1 中的if...in属于传统非表达式类条件语句,存在两个强制语法限制:

  • in关键字后的匹配列表仅支持纯文本逗号分隔格式,同一行内跟在列表后的所有内容都会被识别为匹配项的一部分,所以第一种写法里同行的{会被算入匹配列表,导致条件永远不成立
  • 括号包裹的判断逻辑属于表达式语法,而in不是AHK v1的合法表达式运算符,所以第二种括号写法会直接报语法错误

两种合规的统一格式解决方案

方案1:全代码块统一使用大括号换行风格

所有if、else语句的左大括号都单独占一行,完全符合if...in的语法要求,格式统一无冲突:

Var := "Var"

if Var in Foo,Bar,Baz
{
  MsgBox statement 1
  MsgBox statement 2
}
else
{
  MsgBox statement 3
  MsgBox statement 4
}

方案2:改用表达式写法实现同等逻辑,支持大括号同行

如果你习惯左大括号和语句同行的代码风格,可以用InStr函数拼接分隔符的方式替代if...in,属于表达式类条件判断,完全支持同行写大括号:

Var := "Var"

; 前后加逗号是为了避免部分匹配的问题,比如匹配"Bar"不会误命中"Bar1"
if InStr(",Foo,Bar,Baz,", "," Var ",") {
  MsgBox statement 1
  MsgBox statement 2
} else {
  MsgBox statement 3
  MsgBox statement 4
}

补充说明

如果你使用的是AutoHotkey v2版本,if...in语法已被官方废弃,所有条件判断统一使用表达式写法,不存在上述格式冲突问题。

内容的提问来源于stack exchange,提问作者Wenfang Du

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 21:27:03