自动热键将文本表达式指定给变量



在一个自动热键脚本中,我试图将文本字符串分配给一个变量。有人能发现为什么这不起作用吗,它看起来就像提供的一些例子一样?我不再需要变量了,但现在我只是好奇我做错了什么。。。

myvar:=%"foo";创建全局变量myvar,但没有内容

我知道你可以说myvar=foo但把引号从固定的文本字符串中去掉只会让我感到尴尬。我甚至让它工作了,但在做了一些无害的修饰编辑之前没有保存我的文件我点击"H"任务图标,使用菜单"文件"/"显示变量"来验证空内容。。。

好的,我们给一个变量赋值:

eval_this:= "harry"

如果你这样做,你只需读取变量的内容:

msgbox %eval_this%   ;=harry

当然,在这里,文本没有被评估——"eval_this"只是ahk:的文本

msgbox eval_this     ;= eval_this

这个方法被称为"强制表达式"-这就是你想要做的。它试图像读取代码一样读取文本字符串。它不是读取任何变量的内容,而是查看文本并强迫它成为一个变量(这是一回事,但不是真的)

msgbox % eval_this   ;= harry

这也让我们得到了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

最新更新