Тема: AHK: Ассоциативные массивы
Так мой скрипт превысил размеры для не предикатных(не декларируемых) языков программирования и всё началось путаться, я решил обратить внимание к объектам и начал с Associative Arrays
Вопрос №1
Как описать массив многомерным, хотя бы 2-х? На все мои сочетания различных символов { [ , . - я услышал такие ругательства, которые AHK мне ни разу не говорил ![]()
Вопрос №2
В описании (CHM-справка), я прочитал - For example, {(KeyVar): Value} and {GetKey(): Value} are both valid. - попытался повторить и конечно ничего не вышло, написал функцию, ну и на всякий случай попробовал ещё раз - опять ругательство.
Как же написать то верно?
К функциям я обратился из-за того что, не нашёл индексирования ассоциативных массивов, обычно можно писать так Main.MainPartOne.Next(i).MainPartTwo.Last(j) для версии двух мерного массива/объекта Main или же ещё проще Main.MainPartOne(i).MainPartTwo(j), а ещё можно делать индексацию от ключа.
Вопрос №3
В поисках "присобачит" к объекту функцию, которая как то сможет повлиять на него, я наткнулся на пример из области Prototypes, т.е. конструкторов или же методов, уже началась путаница с обычной терминологией для ООП (Object-oriented programming)
; Create an object.
object.thing := {}
; Store a value.
thing.foo := "bar"
; Create a method by storing a function reference.
thing.test := Func("thing_test")
; Call the method.
thing.test()
thing_test(this) {
MsgBox % this.foo}этот код работает, но работает без параметрической связки, т.е. реализовать наследование или передать текущее значение объекта другому объекту не удаётся, как и поменять значения родителя, т.е. объекта к которому функция привязана, я про допустимые изменения в рамках наследования.
Лезть в классы не хочется, уже страшновато как то становится. ![]()
Для NotePad++(подсветка синтаксиса, автозавершение и плагины(AutoSave и RunMe).
OS Windows 10 x64 Pro

