AutoHotkey 中的一行 if-condition-assignment

Posted

技术标签:

【中文标题】AutoHotkey 中的一行 if-condition-assignment【英文标题】:One line if-condition-assignment in AutoHotkey 【发布时间】:2021-11-07 22:53:39 【问题描述】:

javascript 中,我们可以使用以下单行:

const condition = true

let foo

condition && (foo = 'foo') // ???? one-liner

console.log(foo) // foo

我在 AHK 中试过这个:

condition := true

condition && (foo := "foo")

MsgBox % foo

但是,解释器抛出:

我只好把上面的代码改成下面提示“foo”:

condition := true

; ???? three lines
if (condition) 
  foo := "foo"


MsgBox % foo

如何在 AHK 的一行中做这种类型的赋值?

【问题讨论】:

【参考方案1】:

我们可以使用ternary operator (?:) 来实现这一点,与 JavaScript 不同的是,我们可以省略 AutoHotkey 中的丢失分支:

condition := true

condition ? foo := "foo"

MsgBox % foo

另外,引用0x464e:

请注意,如果您不尝试获取整个三元组的评估结果,则只能省略失败的分支,例如var1 := TrueCondition ? "hello" 不起作用。变量var1 没有设置任何值。

【讨论】:

以上是关于AutoHotkey 中的一行 if-condition-assignment的主要内容,如果未能解决你的问题,请参考以下文章

为啥python 3在while循环之后禁止if-condition? [关闭]

AutoHotkey 背景点击和输入

AutoHotkey:用鼠标坐标计算不起作用

;~ 小部分AutoHotkey源代码片段测试模板2019年10月9日.ahk

如何在 AutoHotkey 中的 SendInput 命令之间添加延迟?

将键盘中的键转换为 AutoHotKey 脚本时出现问题