2013-07-06 76 views
2

在一个autohotkey脚本中,我试图给一个变量分配一个文本字符串。任何人都可以发现为什么这不起作用,它看起来就像一些提供的例子?我不再需要变量,但现在我只是好奇我做错了什么...autohotkey将一个文本表达式分配给一个变量

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

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

回答

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 

考虑这一点,我们迫使两个文本串入T继承人实际值

eval_this := "harry" 
this_too := " and bob" 

test = % eval_this this_too 
msgbox %test%    ;= harry and bob 

好吧,现在你已经掌握了所有这些,这里有一个实际应用。我们将强制将文本字符串的值作为变量。既然我们已经定义了什么“alert”,那么gosub会调用这个定义。将其放入脚本并运行它:

eval_this := "alert" 

gosub % eval_this 
exit ;we are finished with the demo, so end here 

alert: 
    msgbox harry 
return 
相关问题