使用AutoHotkey三元运算符时,如何同时赋值其他变量且避免结果拼接?
解决AutoHotkey三元表达式中赋值结果被拼接的问题
你当前的代码中,三元运算符的true分支将字符串与赋值语句的返回值做了隐式拼接,导致Test变量带上了赋值后的2。要实现目标输出,有两种常用方法:
方案1:拆分逻辑为条件判断语句
这是最直观且易维护的写法,直接将判断和赋值分开:
Hello := "Hello World" if (Hello ~= "Hello") { Test := "Yes, Match!" Word_Count := 2 } else { Test := "No Match!" } OutputDebug, % "Test : " Test OutputDebug, % "Word count is : " Word_Count
方案2:使用逗号表达式保留三元写法
如果希望继续使用三元运算符,可以通过逗号表达式将赋值操作与返回字符串的逻辑包裹在括号中。AutoHotkey中逗号表达式会按顺序执行多个操作,最终返回最后一个表达式的结果:
Hello := "Hello World" Test := Hello ~= "Hello" ? (Word_Count := 2, "Yes, Match!") : "No Match!" OutputDebug, % "Test : " Test OutputDebug, % "Word count is : " Word_Count
原代码问题原因
原代码中"Yes, Match!" (Word_Count := 2)属于AutoHotkey的隐式字符串拼接语法:括号内的赋值语句会返回赋值后的值(即2),这个值会直接拼接到前面的字符串末尾,导致Test变量最终为"Yes, Match!2"。
内容的提问来源于stack exchange,提问作者GaryAtlan82
相关产品推荐
相关产品推荐

