What To Do When You Don’t Know How Many Values You Will Use? For Hotstring Menus, the Variadic Function Parameter Allows a Variable Number of Arguments or Direct Array Input
Variadic Function: One which accepts a variable number of arguments.
In the blog, “AutoHotkey Tip of the Week: Hotstring Menu Techniques for Inserting Symbols and Emojis“, I discussed switching from the deprecated StringSplit command to StrSplit() function before posting the script. After posting my new HotstringMenu.ahk script on the AutoHotkey forum, I received the following comment from the user Delta Pythagorean. I have mixed feelings about the recommended changes:
You can simplify this down by making the parameter variadic and letting the user chose which label to set the menu to work off of.
:x:brb::HotStringMenu("MenuLabel","Hello",,"Goodbye","See you later!") MenuLabel: MsgBox, % "You said: " A_ThisMenuItem Return HotstringMenu(Handle, TextList*) { For Each, Item in TextList Menu, MyMenu, Add, % Item, % (Item != "") ? Handle : "" Menu, MyMenu, Show Menu, MyMenu, DeleteAll }
I like the overall concept. This change to the HotstringMenu() function expands its capabilities by adding a selectable subroutine Label name and uses a variadic parameter which allows the functions to accept an unknown number of values. Continue reading