Автокликер Clickermann :: Форум
Основной раздел => Предложения => Topic started by: Крис Тинка on January 19, 2014, 09:00:50 AM
-
Появление инструкции SWITCH облегчило жизнь, но немногим))) Было бы лучше если добавить к части CASE область значений.
$var = $_xmouse
SWITCH($var)
AREA(-1, $_xmax/2)
print("Курсор в левой половине экрана")
AREA($_xmax/2, ($_xmax + 1))
print("Курсор в правой половине экрана")
END_SWITCH
HALT
-
Это пример для демонстрации или рабочий?
При двух вариантах достаточно IF. Если курсор не слева... значит он справа :)
А я думал там можно условия писать. Вот что значит не использовать. Сижу на 4.8 жду исправления подпрограмм. Пока не работает, нет смысла переписывать скрипты.
-
Конечно для демонстрации. Ведь не существует инструкции AREA. Сейчас у меня ситуация, когда значение переменной является одним из семи областей значений. Пока можно нагородить только IF.
-
А я думал там можно условия писать. Вот что значит не использовать. Сижу на 4.8 жду исправления подпрограмм. Пока не работает, нет смысла переписывать скрипты.
чего это они не работают. они работают кроме одного единственного узкого места - вызова подпрограммы внутри цикла
про доводку свитча. идея конечно интересная, хотя я такого не видел в других языках. в принципе реализуемо конечно но наверно нагромождение условий в данном случае будет не самой плохой идеей.
-
чего это они не работают. они работают кроме одного единственного узкого места - вызова подпрограммы внутри цикла
про доводку свитча. идея конечно интересная, хотя я такого не видел в других языках. в принципе реализуемо конечно но наверно нагромождение условий в данном случае будет не самой плохой идеей.
Я знаю. Но как назло это очень частый случай, по крайней мере у меня. Куда не ткни каждый третий в цикле или другой подпрограмме.
Про Swich... только не ругаться :)
В Autoit есть две похожие конструкции
Switch...Case...EndSwitch http://autoit-script.ru/autoit3_docs/keywords/Switch.htm
Как раз сравнение определённой переменной с разными диапазонами (или одним значением).
И очень похожая функция выбора
Select...Case...EndSelect http://autoit-script.ru/autoit3_docs/keywords/Select.htm
После Select переменная не указывается. Здесь мы в Case пишем любые выражения, не обязательно сравнивать с одной переменной.
Второй вариант универсальней, хоть и приходится иногда чуть больше писать.
В принципе второго варианта достаточно, чтобы перекрыть все потребности и первый частный случай.
В основном я пользовался Select, очень удобно.
-
Куда не ткни каждый третий в цикле или другой подпрограмме.
У меня так же в старых скриптах
-
нагромождение условий в данном случае будет не самой плохой идеей.
Нагромождение то не сложное, но на мой взгляд для дальнейшего редактирования читаемость SWITCH легче и найти в большом скрипте проще...
-
если я правильно понял то плюсую кристинку
есть такой код
switch($loc)
case(0) // начало скрипта идем
$loc=8 // в стартовую локацию переменная loc=0
case(1)
$loc=2
case(3)
if($first=1)
print("первый круг идем на исходную")
$loc=8
else
$loc=4
end_if
case(5)
if($first=1)
print("первый круг идем на исходную")
$loc=8
else
$loc=6
end_if
case(7)
$loc=8
end_switch
case(0) и case(7) одинаковые и было бы логичным сократить код до case(0;7)
-
Это поможет в редких случаях. Лучше ввести Select...Case с произвольным условием.
Select
Case ($а = $akkdata[2])
//.....
Case (($а > 3) & ($a ! b))
//.....
end_select
-
Лучше ввести Select...Case с произвольным условием.
даже более функционально получается