2

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

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

我知道你可以只说 myvar = foo 但在固定的文本字符串中留下引号只会让我畏缩。我什至让它工作,但在进行“一些无害的美容编辑”之前没有保存我的文件。我点击时钟附近的“H”任务图标,使用菜单文件/显示变量来验证空内容...

4

1 回答 1

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
于 2013-07-06T01:19:27.793 回答