2013-07-06 75 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 
相關問題