1

Тема: AHK: Замена IF на составной тернарный условный оператор

По сути я немного сомневаюсь, вот и решил спросить.

Было

  if (varR="False")
        varR := False
  if (varR="True")
        varR := True

Стало

varR := varR = "True" ? True : varR := varR = "False" ? False : ;

Проверил скриптом

varR := "True"
//varR := "False"
varR := varR = "True" ? True : varR := varR = "False" ? False : ;

MsgBox % varR
Return

Честно выдаёт
При varR := "True"  -> 1
При varR := "False" -> 0

Но я всё же сомневаюсь... такие конструкции на С++ работают исправно, но я не ожидал, что и на AHK они тоже сработают...

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

2

Re: AHK: Замена IF на составной тернарный условный оператор

Правильно так:

varR := "True"
; varR := "False"
varR := varR = "True" ? True : varR = "False" ? False : varR

MsgBox % varR
Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

3

Re: AHK: Замена IF на составной тернарный условный оператор

Те ошибка в двойном использовании varR := varR Да?

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

4

Re: AHK: Замена IF на составной тернарный условный оператор

Скорее избыточность. Также отсутствует проверка на вариант, что переменная не равна ни тому, ни другому.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Замена IF на составной тернарный условный оператор

Также отсутствует проверка на вариант, что переменная не равна ни тому, ни другому.

это происходит ранее, мне нужно было при чтении из ini-файла отработать вариант, когда флаг задаётся не числом, а одним из этих двух ключевых слов, так сказать - "на всякий случай"/"защита от дурака"... хотя можно и проверять вариант не True и не False, но функция просто считывает то что её попросили и не более.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

6

Re: AHK: Замена IF на составной тернарный условный оператор

Indomito пишет:

мне нужно было при чтении из ini-файла отработать вариант, когда флаг задаётся не числом, а одним из этих двух ключевых слов

Всё равно нужно отрабатывать все варианты, т. к.:

varR := 123
; varR := "False"
varR := varR = "True" ? True : varR := varR = "False" ? False : ;

MsgBox % varR
Return
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Замена IF на составной тернарный условный оператор

По сути ты прав, но тогда надо...

1. Учитывать имя секции (оно заведомо известно) например vSec := "Flags"
2. Переменной varR присвоить слово ERROR - varR := "ERROR"

А это можно как то записать в тернарном условном операторе (многоступенчатые IF-ELSE утомляют)?
Я просто не знаю тонкостей AHK в данном вопросе.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

8

Re: AHK: Замена IF на составной тернарный условный оператор

Кратко как-то так:

vSec := "Flags"
varR := 123
(vSec = "Flags") && varR := varR = "True" ? True : varR = "False" ? False : "ERROR"
MsgBox % varR
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

9

Re: AHK: Замена IF на составной тернарный условный оператор

Спасибо... буду проверять.

"На каждое действие есть равная ему противодействующая критика." Постулат Харриссона
OS Windows 7 x64
AutoHotkey v1.1.32.00 - November 24, 2019
Click to Download

10 (изменено: Alectric, 2014-09-02 20:09:00)

Re: AHK: Замена IF на составной тернарный условный оператор

Еще можно так:


varR := "False"
varR := %varR%
MsgBox % varR

varR := "true"
varR := %varR%
MsgBox % varR

varR := "dsgd"
varR := %varR%
MsgBox % varR

varR := "dsgd"
varR := %varR%
varR := varR = "" ? "ERROR" : varR
MsgBox % varR

При других значениях (кроме 0) возвращает пустую строку - т.е. "False".

...

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

11

Re: AHK: Замена IF на составной тернарный условный оператор

Alectric,

foo := 123456
;
; много строк кода
;
varR := "foo"
varR := %varR%
varR := varR = "" ? "ERROR" : varR
MsgBox % varR

12 (изменено: Alectric, 2014-09-02 21:17:17)

Re: AHK: Замена IF на составной тернарный условный оператор

Irbis,

true := false
;
; много строк кода
;
varR := "true"
varR := %varR%
MsgBox % varR "`n" foo
varR := varR = "True" ? True : varR = "False" ? False : "ERROR"
MsgBox % varR "`n" foo

Задача была в считывании настроек (True/False/SomthingElse), но ладно, неважно, мой вариант неверный.
Есть вероятность, что содержимое "настройки" совпадет с названием переменной, но...

...

Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.