假设我有以下
^!r::
InputBox, input, Enter the string
if (input = "trip")
{
TripFunction()
}
else if (input = "leave")
{
LeaveFunction()
}
else
{
Msgbox, That word isnt defined.
}
Return
但是,预计必须添加大量不同的情况进行测试,我认为最好的想法是将其放入数组中,并遍历数组,查找匹配的键,返回值(函数) ,而不再遍历字典。所以现在,我有这样的事情:
^!r::
InputBox, input, Enter the string
dict = { "trip": TripFunction(), "leave": LeaveFunction() }
for k, v in dict
{
...
see if k = "trip", if so, return TripFunction(), if not, go to next
item in array
...
}
Return
我遇到的麻烦是,一旦它成功匹配字典中的一个键,它将返回所有相关值。我应该在括号内做什么来做我想做的事?
答案 0 :(得分:2)
您使用了错误的equal sign operator(使用:=
进行非文字作业而不是=
)
此外,在行dict = { "trip": TripFunction(), "leave": LeaveFunction() }
中,执行tripfunction aind leavefunction,这可能是你不想要的。
尝试:
^!r::
InputBox, input, Enter the string
dict := { "trip": "TripFunction", "leave": "LeaveFunction" }
for k, v in dict
{
if(k==input) {
%v%() ; documentation: https://autohotkey.com/docs/Functions.htm#DynCall
break
}
}
Return
TripFunction() {
msgbox trip
}
LeaveFunction() {
msgbox leave
}