为什么是`PrevActiveClass? WinActivate ahk_class %PrevActiveClass%` 不工作?
Why `PrevActiveClass ? WinActivate ahk_class %PrevActiveClass%` is not working?
PrevActiveClass
被赋值,下面的代码不会激活PrevActiveClass
(虽然):
PrevActiveClass ? WinActivate ahk_class %PrevActiveClass%
但以下将激活 PrevActiveClass
:
if (PrevActiveClass) {
WinActivate ahk_class %PrevActiveClass%
}
为什么第一个片段不起作用,如何在一行代码中实现相同的逻辑?
当你使用三元时,你在一个表达式中。
Legacy命令只能在legacy语句中使用,所以说的更清楚,只能在新行的开始(正常情况下) .
您现在要做的是将三个变量连接在一起 (并丢弃结果) 命名为 WinActivate
, ahk_class
和一个名为 PrevActiveClass
.
的动态变量
how to implement the same logic in one line of code?
你不能。
你最多只能写两行:
if (PrevActiveClass)
WinActivate, % "ahk_class " PrevActiveClass
(我切换到使用表达式,也可以在旧语法中工作,但是哎呀,旧语法)
从技术上讲,您当然可以这样做:
WinActivate, % PrevActiveClass ? "ahk_class " PrevActiveClass : "NonExistentWindow"
但那将是一个非常愚蠢的设计。
此外,您可以定义自己的函数来激活 window,然后在表达式中调用它:
PrevActiveClass ? WinActivateFunc("ahk_class " PrevActiveClass)
WinActivateFunc(WinTitle := "", WinText := "", ExcludeTitle := "", ExcludeText := "")
{
WinActivate, % WinTitle, % WinText, % ExcludeTitle, % ExcludeText
}
有些人实际上这样做是为了他们可以内联使用遗留命令。
我知道人们也制作了一些库,它们为每个(?)遗留命令提供类似的功能。
你应该可以从 AHK 论坛中找到一个。
此外,我想 AHKv2 在这里值得一提,因为 v2 中根本没有遗留语法。那里不存在这个问题。
PrevActiveClass
被赋值,下面的代码不会激活PrevActiveClass
(虽然
PrevActiveClass ? WinActivate ahk_class %PrevActiveClass%
但以下将激活 PrevActiveClass
:
if (PrevActiveClass) {
WinActivate ahk_class %PrevActiveClass%
}
为什么第一个片段不起作用,如何在一行代码中实现相同的逻辑?
当你使用三元时,你在一个表达式中。
Legacy命令只能在legacy语句中使用,所以说的更清楚,只能在新行的开始(正常情况下) .
您现在要做的是将三个变量连接在一起 (并丢弃结果) 命名为 WinActivate
, ahk_class
和一个名为 PrevActiveClass
.
how to implement the same logic in one line of code?
你不能。
你最多只能写两行:
if (PrevActiveClass)
WinActivate, % "ahk_class " PrevActiveClass
(我切换到使用表达式,也可以在旧语法中工作,但是哎呀,旧语法)
从技术上讲,您当然可以这样做:
WinActivate, % PrevActiveClass ? "ahk_class " PrevActiveClass : "NonExistentWindow"
但那将是一个非常愚蠢的设计。
此外,您可以定义自己的函数来激活 window,然后在表达式中调用它:
PrevActiveClass ? WinActivateFunc("ahk_class " PrevActiveClass)
WinActivateFunc(WinTitle := "", WinText := "", ExcludeTitle := "", ExcludeText := "")
{
WinActivate, % WinTitle, % WinText, % ExcludeTitle, % ExcludeText
}
有些人实际上这样做是为了他们可以内联使用遗留命令。
我知道人们也制作了一些库,它们为每个(?)遗留命令提供类似的功能。
你应该可以从 AHK 论坛中找到一个。
此外,我想 AHKv2 在这里值得一提,因为 v2 中根本没有遗留语法。那里不存在这个问题。