1

Тема: AHK: вызов глобальной функции каллбеком из класса с параметрами

Приветствую всех. Не могу понять каким образом перед мне из метода класса вызвать каллбек функцию которая была параметром метода класса.
Так же хотелось бы узнать каким образом я могу сделать массив функций которые можно было бы вызывать таким образом:


funcsArray['exampleFunc'](param1,param2,param3)

2

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

Не очень понятно, что имеете в виду.

вызов глобальной функции

В AHK функции всегда глобальные, локальные только методы классов.

вызвать каллбек функцию которая была параметром метода класса

Что за "каллбек функция", и когда "была"? Приведите пример кода.

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

3

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

teadrinker пишет:

Не очень понятно, что имеете в виду.

вызов глобальной функции

В AHK функции всегда глобальные, локальные только методы классов.

вызвать каллбек функцию которая была параметром метода класса

Что за "каллбек функция", и когда "была"? Приведите пример кода.

Про глобальные функции запомню.
Вот пример кода:


class enyClass {
...
	callbackResult(fn) {
		return fn()
	}

}

...
enyClass.callbackResult(anyFunction)

У меня появились идеи реализовать это таким образом:


functions := Object()
RegisterCommand(function) {
	functions.InsertAt(function,function)
	return true
}

DeleteCommand(function) {
	functions.DeleteAt(function)
	return true
}

anyCommand() {
	MsgBox, 0,, Test
}

RegisterCommand("anyCommand")

function["anyCommand"]()

4

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

class enyClass {
   callbackResult(fn) {
      fn.Call()
   }
}

enyClass.callbackResult( Func("MyFunc") )
MyFunc()  {
   MsgBox, % A_ThisFunc
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

teadrinker

можно ли добавить параметров для выполнения функции уже в вызове функции через .Call() ? например значение из класса .Call(this) (например экземпляр класса)

а в параметре задания callback функции указывать просто enyClass.callbackResult( Func() )

в самой функции делать писать параметр один :


Func(thisClass)  {
   thisClass.newAnyFunc()
}

например так

6

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

McFree пишет:

можно ли добавить параметров для выполнения функции уже в вызове функции через .Call() ? например значение из класса .Call(this) (например экземпляр класса)

Можно:

class enyClass {
   callbackResult(fn) {
      fn.Call(this)
   }
   
   ClassMethod()  {
      MsgBox, % A_ThisFunc
   }
}

enyClass.callbackResult( Func("MyFunc") )

MyFunc(param)  {
   param.ClassMethod()
}
McFree пишет:

а в параметре задания callback функции указывать просто enyClass.callbackResult( Func() )

Не стоит свою функцию называть Func(), это зарезервированное название для встроенной функции, возвращающей func-объект.
Можно ещё так:

class enyClass {
   callbackResult(fn) {
      %fn%(this)
   }
   
   ClassMethod()  {
      MsgBox, % A_ThisFunc
   }
}

enyClass.callbackResult("MyFunc")

MyFunc(param)  {
   param.ClassMethod()
}

но это устаревший синтаксис.

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

7

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

McFree, запрещено избыточное цитирование. Исправьте здесь.
Предложения должны начинаться большой буквой и заканчиваться точкой. Исправьте здесь.

8 (изменено: Phoenixxx_Czar, 2017-10-24 19:50:31)

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

ypppu, ты в школе преподавателем работаешь? Или на форуме модератором выступаешь? Тут не школа, да и модератор из тебя тоже хреновый, если ты не хочешь исправлять. Мы тут не экзамен в школе сдаем. И не сочинение.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

9

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

Phoenixxx_Czar, в моё время в школе требовали несколько больше, чем соблюдать заглавные буквы и точки.

10

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

ypppu,  в чем поменяется понимание того, что сказано, если не будет заглавной буквы и точки?
Ровным счетом ничего.

Win10: LTSC (21H2); AHK: ANSI (v1.1.36.02)

11

Re: AHK: вызов глобальной функции каллбеком из класса с параметрами

Ну да, ну да... Заглавные буквы и точки придумали непонятно зачем... Вы случаем ни из "страны невыученных уроков"?