1

Тема: AHK: Что значит &

Хотелось бы узнать что значит &.
На форуме в RegEx не нашел.

2

Re: AHK: Что значит &

Справка пишет:

Адресация (&) и разадресация (*). [v1.0.36.07+] Выражение &MyVar возвращает адрес содержимого переменной MyVar в памяти. Выражение *MyVar, напротив, предполагает, что идентификатор MyVar ссылается на числовой адрес в памяти и извлекает байт по этому адресу как число диапазона от 0 до 255 (если адрес нулевой, всегда возвращается 0, однако другие недействительные адреса могут привести к сбою в работе скрипта). Эти редко используемые операторы полезны при работе со структурами команды DllCall и при обработке строк, содержащих бинарные нули. Как пример можно посмотреть функцию ExtractInteger().

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

3

Re: AHK: Что значит &

Alectric Спасибо

4 (изменено: Alectric, 2017-09-25 18:22:50)

Re: AHK: Что значит &

Также справка пишет:

Побитовые И (&), исключающее ИЛИ (^), и ИЛИ (|). Операции имеют разный приоритет. Самый высокий приоритет среди них имеет &, а самый низкий - |. Перед вычислениями нецелые параметры округляются до целых.

Ссылка.

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

5

Re: AHK: Что значит &

Еще 1 вопрос. Что занчит : в данном случае?

(pr = "" || f - pr = 1) ? (pr := f, l++, s += f) 
: ((l > r && (r := l, m := s)), l := s := 0, pr := "") 

6 (изменено: Alectric, 2017-09-25 19:10:56)

Re: AHK: Что значит &

Всё та же справка пишет:

NOT - Логическое НЕ. За исключением более низкого приоритета, логическое НЕ совпадает с оператором !. Например, выражение Not (x = 3 or y = 3) равносильно выражению !(x = 3 or y = 3)

AND,&& - Оба данных оператора являются логическим И. Пример использования: x > 3 and x < 10. Для увеличения производительности по возможности используется схема быстрой оценки.

Строка, начинающаяся с AND/OR/&&/|| (или с другого оператора), становится продолжением предшествующей строки.

OR,|| - Оба оператора осуществляют логическое ИЛИ. Например: x <= 3 or x >= 10. По возможности, для ускорения используется быстрая оценка операции.

? : - Тернарный условный оператор [v1.0.46+]. Этот оператор является коротким вариантом конструкции if-else. Термин "тернарный" означает, что оператор связывает ТРИ операнда. Первый операнд рассматривается как булево условное выражение, определяющее какой из двух оставшихся операндов будет выбран для исполнения. Вот пример операции присвоения, в которой присваиваемое значение выбирается тернарным оператором:
var := x > y ? 2 : 3
Здесь, если x больше y, переменной Var присваивается значение 2, если нет - присваивается 3.

Для ускорения при обработке оценивается только исполняемый операнд.

Примечание: из соображений совместимости знак "?" должен быть окружен пробелами (может быть это будет устранено в следующих версиях).

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

7

Re: AHK: Что значит &

Alectric, Еще раз спасибо.

8 (изменено: Alectric, 2017-09-25 19:12:46)

Re: AHK: Что значит &

(pr = "" || f - pr = 1) ? (pr := f, l++, s += f) 
: ((l > r && (r := l, m := s)), l := s := 0, pr := "") 

Тоже что и:

if (pr="" or f-pr=1)
{
  pr:=f
  l++
  s+=f
}
else
{
  if (l>r)
  {
    r:=l
    m:=s
  }
  l:=s:=0
  pr:=""
}
Win 10 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

9

Re: AHK: Что значит &

Alectric, Спасибо большое

10 (изменено: AlexLF, 2025-01-26 10:10:08)

Re: AHK: Что значит &

А вот здесь используется знак & для инициализации переменных:

; Информация об окне 
WinGetPos &X, &Y, &W, &H,"A"

При этом не надо писать сначала X = 0, Y = 0 и т.д.

X = 0, Y = 0, W=1000, H=1000 ; Без этого будет ошибка
WinGetPos X, Y, W, H,"A"

Конечно, используя & внутри функции, задавать переменные короче. Но почему это работает?..

11

Re: AHK: Что значит &

А вы какую версию AHK пытаетесь использовать? Похоже, в ваших примерах перепутан синтаксис v1 и v2.

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

12 (изменено: AlexLF, 2025-01-26 13:26:50)

Re: AHK: Что значит &

teadrinker,
сейчас перешел на ver. 2. Первое выражение работает в ver. 2.

13

Re: AHK: Что значит &

Ну да, работает, как в справке написано. А в чём вопрос-то?

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

14

Re: AHK: Что значит &

teadrinker
В справке выше:
Выражение &MyVar возвращает адрес содержимого переменной MyVar в памяти

Вопрос, почему можно не определять начальные значения для переменной, как в примере выше. Хотя, в общем-то, работает и работает, какая особо разница.

15

Re: AHK: Что значит &

А что за справка? Которая в первом посте процитирована? Так это для первой версии, у второй отдельная.

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