AutoHotkey 中的一行 if-condition-assignment

One line if-condition-assignment in AutoHotkey

提问人:Wenfang Du 提问时间:9/12/2021 最后编辑:Wenfang Du 更新时间:9/28/2021 访问量:497

问:

在 JavaScript 中,我们可以使用以下单行代码:

const condition = true

let foo

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

console.log(foo) // foo

我在 AHK 中尝试过这个:

condition := true

condition && (foo := "foo")

MsgBox % foo

但是,解释器会抛出:

enter image description here

我不得不将上面的代码更改为以下代码以提示“foo”:

condition := true

; 👇 three lines
if (condition) {
  foo := "foo"
}

MsgBox % foo

如何在 AHK 的一行中完成此类作业?

运算符 autohotkey 变量 赋值 运算符 短路

评论


答:

0赞 Wenfang Du 9/12/2021 #1

我们可以使用三元运算符 (?:) 来实现这一点,与 JavaScript 不同,我们可以省略 AutoHotkey 中的 lost 分支:

condition := true

condition ? foo := "foo"

MsgBox % foo

另外,引用0x464e

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