Случайная переменная, которая не совпадает с другой переменной в AutoHotKey - PullRequest
2 голосов
/ 02 марта 2020

Я хочу иметь возможность печатать случайные переменные одну за другой без повторов. Вот что я попробовал:

   Random WINa1, 1,4
SendInput, va%WINa1%
Loop, 
{
    Random WINa2, 1,4
 } Until %WINa2% not %WINa1%
SendInput, vb%WINa2%

Тем не менее, я думаю, что я должен использовать Until неправильно? Как первая часть будет работать, но потом она застревает в l oop?

1 Ответ

0 голосов
/ 02 марта 2020

Проблема здесь заключается в попытке использовать устаревший синтаксис в том, что принимает только более новый и лучший синтаксис выражений, а также неправильно использует устаревший NOT.
Устаревший оператор NOT не является не- равно оператору , так что здесь не получится.
Но в любом случае, давайте избавимся от всех этих устаревших вещей и сделаем это правильно.

Random WINa1, 1,4
SendInput, % "va" WINa1
Loop
    Random WINa2, 1,4
Until (WINa2 != WINa1)
SendInput, % "vb" WINa2

Я также переключился для выражения синтаксиса в SendInputs, на самом деле не нужно, но вы никогда не поймете меня, используя устаревший синтаксис, это уже не 2008.
Также опущены скобки, так как они не нужны в операторах 1liner.

Таким образом, мы переключились на использование оператора != (not-equals) и добавили скобки вокруг оператора. Скобки в этом случае технически не нужны, но они обычно указывают, что мы находимся в режиме выражения, поэтому я бы сказал, что это хорошая практика - использовать их здесь.

Чтобы узнать больше о языке сценариев AHK (наследие против выражения), начните здесь:
https://www.autohotkey.com/docs/Language.htm

...