Что делает это выражение? Gui% (MainGui: =! MainGui)? «Скрыть»: «Показать» - PullRequest
0 голосов
/ 21 апреля 2019

Я нахожу этот код в этой теме: Приостановка, приостановка, скрытие, подтягивание окна GUI :

Gui % (MainGui:=!MainGui) ? "Hide" : "Show"

Что это делает? Я предполагаю, что это некое простое if выражение для горячих клавиш , но, проверяя примеры на двух страницах, я не вижу, где оно находится.

Если используется SetTimer, счетчик будет увеличиваться только в том случае, если этот код помещен в подпрограмму. Если положить наружу, счетчик останавливается.

Gui +LastFound +AlwaysOnTop +ToolWindow -Caption
Gui, Add, Text, vcounter, 00000
Gui, Show, NoActivate 

SetTimer, Update, 100 ; 100 ms
Update:
    counter++
    GuiControl,, counter, %counter%
    ^esc::Gui % (MainGui:=!MainGui) ? "Hide" : "Show"
Return 

1 Ответ

1 голос
/ 21 апреля 2019

Это своего рода оператор в выражениях :

Тернарный оператор [v1.0.46 +].Этот оператор является сокращенной заменой оператора if-else.Он оценивает условие на левой стороне, чтобы определить, какая из его двух ветвей должна стать его конечным результатом.Например, var: = x> y?2: 3 сохраняет 2 в Var, если x больше y;в противном случае он сохраняет 3. Для повышения производительности оценивается только выигрышная ветвь (см. оценку короткого замыкания).

Команда ^esc::Gui % (MainGui:=!MainGui) ? "Hide" : "Show" состоит из двух частей.

  1. (MainGui:=!MainGui) Переключает значение переменной MainGui на ее противоположное значение, обычно с True на False и наоборот.
  2. Использует стандартную форму троичного оператора для проверки значения переменной MainGui.Если оно равно True, оно использует значение Hide, если оно равно False, оно использует значение Show.

^esc::Gui % (MainGui:=!MainGui) ? "Hide" : "Show" переводится в одно из следующих значений после всех оценок:
1. Если MainGui равно True ==> Gui Hide
2. Если MainGui равно False ==> Gui Show

Краткое объяснение: ^esc Горячая клавиша скрывает графический интерфейс, если он активен, показывает его, если он скрыт.

...