1

Тема: AHK: Как проверить функцию на существование внутри класса?

Здравствуйте, требуется узнать, существует-ли функция внутри вызываемого класса. Вот код:


class Test {

	Check(function) {
		if (IsFunc(this.function)) {
			MsgBox, % "Функция " function " существует внутри класса"
		} else {
			MsgBox, % "Функция " function " не существует внутри класса"
		}
	}
	TestFunction() {
		return true
	}
}

t := new Test()
t.Check("TestFunction")

Но он, к сожалению, не работает. Есть ли решение?

2

Re: AHK: Как проверить функцию на существование внутри класса?

Ладно, допустим, нашел.
Вот, может, кому надо.


class Test {
	check(function) {
		MsgBox, % IsFunc(this.__class "." function)
	}
	testFunc() {
		return true
	}
}

t := new Test()
t.check("testFunc")

3 (изменено: serzh82saratov, 2018-07-09 04:52:05)

Re: AHK: Как проверить функцию на существование внутри класса?


class Test {
	testFunc() {
	}
}
MsgBox % IsFunc(Test.testFunc)
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

4 (изменено: toopie, 2018-07-09 17:08:03)

Re: AHK: Как проверить функцию на существование внутри класса?

serzh82saratov, брат, прочитай название темы, брат.
Внутри класса, брат. Внутри, брат.
Понимаешь, брат? Внутри класса, не снаружи, а внутри, брат.

5

Re: AHK: Как проверить функцию на существование внутри класса?

class Test {
	__new(function) { 
		MsgBox % IsFunc(this[function])
	}
	testFunc() { 
	}
}
new Test("testFunc") 
 

Да кто же тебя знает чё ты имеешь ввиду, если проверить надо метод класса, а не функцию. Может ты по не знанию метод называешь функцией внутри класса, хотя нет, я смотрю ты очень умный.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

6

Re: AHK: Как проверить функцию на существование внутри класса?

serzh82saratov, в смысле да, тыща извинений.
Теперь новый вопрос - как вызвать этот метод класса?
Вот мои наброски, ну они, конечно-же, не работают.


class A {
	Check(function) {
		return func(this[function]).Bind("Hello, world!").Call()
	}
	testFunc(wText) {
		MsgBox, % wText
		return true
	}
}

a := new A()
a.Check("testFunc")

7 (изменено: MandarinKa02, 2018-07-09 19:20:04)

Re: AHK: Как проверить функцию на существование внутри класса?

Тема с ответом.
http://forum.script-coding.com/viewtopic.php?id=13907

8 (изменено: serzh82saratov, 2018-07-09 19:40:50)

Re: AHK: Как проверить функцию на существование внутри класса?


class Test {
	__new(function) { 
		this[function]("Hello, world!")
	}
	testFunc(txt) { 
		MsgBox % txt
	}
}
new Test("testFunc")
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

9

Re: AHK: Как проверить функцию на существование внутри класса?

serzh82saratov, спасибо большое
Но возможно ли все таки как нибудь через func это организовать?

10

Re: AHK: Как проверить функцию на существование внутри класса?

Тогда идёт смещение параметров, видимо баг.


class Test {
	__new(function) {   
		Func(this.__class "." function).Call(0, "Hello, world!") 
	}
	testFunc(txt) { 
		MsgBox % txt
	}
}
new Test("testFunc")
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

11 (изменено: toopie, 2018-07-10 04:43:42)

Re: AHK: Как проверить функцию на существование внутри класса?

serzh82saratov, thank you

12 (изменено: toopie, 2018-07-10 15:53:14)

Re: AHK: Как проверить функцию на существование внутри класса?

я

13

Re: AHK: Как проверить функцию на существование внутри класса?

Еще проблема (2) возникла.
1) Что значит 0 в методе Call в func().Call(0, param)? Call(0 <<<<<<<<<<<<<<<<<<<<<<<<<<<<<
2) Как вызвать метод класса в методе класса?


class A {

	testFunc(text) {
		MsgBox, % text
		return func(A_ThisFunc).Call(text)
	}
}

Код, конечно же, не работает.