Тема: AHK: Варианты записи if else
Как такой код сократить если error много?
error1 := "a"
error2 := "b"
error3 := "c"
x := "test"
if !(x ~= error1) and !(x ~= error2) and !(x ~= error3)
msgboxВы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Как такой код сократить если error много?
error1 := "a"
error2 := "b"
error3 := "c"
x := "test"
if !(x ~= error1) and !(x ~= error2) and !(x ~= error3)
msgboxerror26 := "z"
n := 26
Loop, %n%
{
If (x ~= error%A_Index%)
Var := 1
}
If Var != 1
MsgBox, Условие выполненоА такая форма записи неправильна?
If !(x ~= error%A_Index%)Надо так?
If (x ~= error%A_Index%)
Var := 1
If Var != 1И пускать список ошибок через loop - это правильно?
Как принято делать у программистов?
А такая форма записи неправильна?
If !(x ~= error%A_Index%)Надо так?
If (x ~= error%A_Index%) Var := 1 If Var != 1
Наверное есть более подходящие для этого способы, мой может оказаться колхозным. Правильна или не правильна - судите сами. Вам нужно проверить условие, и, если оно выполнено, показать сообщение, так? В моём варианте логика такая: если условие ни разу не нарушено, то MsgBox. В Вашем исходном алгоритме логика: если условие выполнено, то MsgBox. Полагаю, их можно считать эквивалентными.
И пускать список ошибок через loop - это правильно?
Как принято делать у программистов?
Я не программист.
В данном случае можно просто засунуть в один шаблон:
error1 := "a"
error2 := "b"
error3 := "c"
x := "test"
if !(x ~= error1 "|" error2 "|" error3)
msgbox yes
else
msgbox no
Если действительно много, то лучше через InStr в цикле проверять, быстрее.
А где можно прочитать про записи этих шаблонов?
Как я понял - "|" - это равносильно "and"?
И в догонку "~=" как-то можно сделать независимым от заглавных и строчных букв? То есть аналог If InStr().
"~=" это RegEx, про него всё написано на русише.
И в догонку "~=" как-то можно сделать независимым от заглавных и строчных букв?Это опция "i"
error1 := "a"
error2 := "b"
error3 := "c"
x := "testA"
if !(x ~= "i)" error1 "|" error2 "|" error3)
msgbox yes
else
msgbox no
Как я понял - "|" - это равносильно "and"?
Несовсем.
Про Регекс понял. Так что же за разделитель | ?
Регулярные выражения (RegEx) - краткий справочник
Если понял, то что здесь не ясно.
Вертикальная черта разделяет варианты, между которыми можно выбирать. Совпадение принимается, если любой из альтернативных элементов совпадает. Например, gray|grey отвечает и gray, и grey. Аналогично шаблон gr(a|e)y делает ту же работу благодаря скобкам. Примечание переводчика: требуется добавить, что первым вариантом считается все от "(" или начала шаблона до '|', а последним - все от '|' до ")" или конца шаблона. Обычно, чтобы не запутаться, набор вариантов всегда заключают в скобки, даже если без этого можно было бы обойтись.
Так такое разделение только в случае ~= возможно.
Я думал, что это альтернативеая форма записи без написания в каждом из вариантов переменной.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться