1

Тема: AHK: Ассоциативный массив

Здравствуйте, не понимаю как внедрить в ассоциативный массив переменную:


dir := {}
var := "123"
dir := { %var% :"456"}
MsgBox, % dir["123"]

Это возвращает ошибку, а если просто сделать так:


dir := {}
var := "123"
dir := {var:"456"}
MsgBox, % dir["123"]

То ключом массива будет var, т.е dir.var

2 (изменено: ~incognito, 2022-06-14 19:57:40)

Re: AHK: Ассоциативный массив

Извините, немного затупил, на официальном сайте нашёл:


dir := {}
var := "123"
dir := {(var):"456"}
MsgBox, % dir[var]

Сразу не нашёл т.к. всё на английском, а на русском Wiki этого нету(либо я плохо искал).
Хотя если сделать так:


dir := {}
var := "123"
dir := {(var):"456"}
MsgBox, % dir["123"]

То всё равно не заработает и это странно т.к. с другой переменной в которой это же значение ("123") будет всё работать.
Так что проблема решена!

3

Re: AHK: Ассоциативный массив

Вроде ничего сложного нет. Скобки для ключа? Ни разу такое не встречал.

Arr := {}	; Создаём ассоциативный массив.
Key1 := 123, Var1 := "Var 123"
Key2 := "987", Var2 := "Var 987"

Arr[Key1] := Var1
Arr[Key2] := Var2
Arr.Key3 := Key1 + Key2		; Вариант присвоения строки 'Key3'. АХК игнорит строку и прибавляет как число.

For k,v in Arr{		; Обойти всё содержимое:
 T .= k "`t=`t" v "`n"	; Добавить в строку для отображения.
}
MsgBox, % Arr[Key1] "`n" Arr[Key2] "`n`n" T
Win10x64, AHK v1.1.33.09 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

4 (изменено: Phoenixxx_Czar, 2022-06-15 12:37:45)

Re: AHK: Ассоциативный массив

__Михаил__ пишет:

Скобки для ключа? Ни разу такое не встречал.

Так можно даже в JS, только используются квадратные скобки:


const key = "test";
const obj = {[key]: "value"};

console.log(obj);
Win10: LTSC (v1809); AHK: ANSI (v1.1.33.10)