在autohotkey脚本中,我试图将文本字符串分配给变量。任何人都可以发现为什么这不起作用,它看起来就像一些提供的例子?我不再需要变量,但现在我只是好奇我做错了什么......
myvar:=%“foo”;创建全局变量myvar,但没有内容
我知道你可以说myvar = foo 但是将引号从固定的文本字符串中删除只会让我感到畏缩。我甚至让它工作,但没有'保存我的文件,然后做'一些无害的化妆品编辑。'我点击“H”任务 时钟附近的图标,使用菜单文件/显示变量来验证空内容......
答案 0 :(得分:3)
好的,我们为变量赋值:
eval_this:= "harry"
如果你这样做,你只需阅读变量的内容:
msgbox %eval_this% ;=harry
当然,在这里,文本没有被评估 - “eval_this”只是文字给ahk:
msgbox eval_this ;= eval_this
这种方法被称为“强制表达” - 这是你想要做的。它尝试读取文本字符串,就好像它是代码一样。它不是在读取任何变量的内容,它正在查看文本并强制它成为一个变量(它有点相同,但不是真的)
msgbox % eval_this ;= harry
这也让我们很烦,你可以看到我们如何阅读变量:
test := eval_this
msgbox %test% ;=harry
同样的事情,不同的方法(强制文本成为变量):
test = % eval_this
msgbox %test% ;=harry
考虑这一点,我们将两个文本字符串强制为实际值
eval_this := "harry"
this_too := " and bob"
test = % eval_this this_too
msgbox %test% ;= harry and bob
好的,既然你已经拥有了这一切,那么这是一个实际应用。我们将强制文本字符串的值为变量。由于我们实际上已经定义了什么是“警报”,因此gosub将调用该定义。将其弹出到脚本中并运行它:
eval_this := "alert"
gosub % eval_this
exit ;we are finished with the demo, so end here
alert:
msgbox harry
return