У меня есть небольшой тестовый скрипт, подобный этому:
#SingleInstance, off
global gText
global gNum := 0
Gui, Font, s9 cBlack, Tahoma
Gui, Add, Text, w50 center vgText, % "0"
Gui, Add, Button, x+10 gBtnClicked, % "Add one"
Gui Show
return
BtnClicked()
{
gNum +=1
GuiControl, , gText, % gNum
}
GuiEscape:
GuiClose:
ExitApp
Это работает следующим образом:
Теперь я хочу инкапсулировать GuiControl
в функцию, как метод A ниже:
BtnClicked()
{
gNum +=1
SetStaticText(gText, gNum) ;(A) elegant argument
}
SetStaticText(widget, num)
{
GuiControl, , widget, % num ; but it does NOT work
}
Это не работает. Я точно могу определить проблему, которая заключается в том, что widget
не распознается как "имя переменной" для GuiControl.
Итак, я попробовал метод B,
BtnClicked()
{
gNum +=1
SetStaticText("gText", gNum) ;(B) ugly argument
}
SetStaticText(widget, num)
{
GuiControl, , %widget%, % num ; workable
}
Метод Б работает, но он уродлив. Вызывающая сторона вынуждена передавать строку вместо переменной.
Итак, мой вопрос: могу ли я инкапсулировать функцию как метод?
PS: Autohotkey 1.1.24