AHK 中 % 符號的用法

AHK 中有一個很特別的符號 %。幾乎隨便從網上下一段 AHK 代碼,就能夠看到裏邊有 % 符號,並且 % 在 AHK 裏的用法和全部其餘編程語言都不同,基本靠猜的話是猜不出來的。編程

用法一:%var%

第一種用法咱們在介紹賦值表達式的時候接觸過:微信

a = 123
b = %a%
c = %a%456

當用 = 對變量賦值時,若是一個字符串被兩個 % 包圍,而且中間沒有空格,那麼含義是取這個變量的值。編程語言

在調用一個命令時,也是這樣。函數

a = 123
MsgBox, %a%

若是咱們這樣用,Name, xx, yy,Name 就是命令;若是咱們這樣用,Name("xx", "yy"),Name 就是函數。命令和函數的區別咱們也會在以後的文章瞭解到,如今只須要關注命令便可。性能

注意兩個%之間只能有一個單獨的變量名,像 x[1]、x.y、x[y]、fun() 等一律不支持。code

用法二:% var

% 還有另外一種用法,這回它只出現一個,而且 % 的後邊有至少一個空格。ip

a = 123
b = % a
MsgBox, % a

這樣用表示 % 後邊的內容按表達式來解析。咱們能夠認爲:字符串

b = %a%
MsgBox, %a%

變量

b = % a
MsgBox, % a

是同樣的,實際上後者更強大一些。循環

a := 1
b := 2
c := 3

; 計算 a + b + c,結果爲 6
MsgBox, % a + b + c

; 語法錯誤
; MsgBox, %a + b + c%

; 語法正確,但 + 失去計算功能,變成了字符串的一部分
; MsgBox, %a% + %b% + %c%

若是 % 後邊不僅是一個變量名,而是一個表達式,那麼「用法二」有效,「用法一」無效。

使用「用法一」仍是「用法二」

咱們發現「用法一」和「用法二」的功能上是有重疊的,那麼實際狀況應該怎麼用呢?這個仍是因人而異,儘可能先後一致便可。但在某些場景「用法一」更方便,某些狀況「用法二」更方便,甚至只能用「用法二」。

「用法一」更方便的場景:

; 變量自己包含雙引號等特殊字符
c = "%a% %b%"

; 多行字符串中包含變量
c =
(
xxx
%a%
%b%
)

「用法二」更方便的場景:

; 字符串中的變量居多
MsgBox, % a " " b " " c " " d

只能用「用法二」的場景:

; 須要使用表達式
MsgBox, % a + b - c

另外若是考慮性能的話,「方法一」是要比「方法二」快二分之一到一倍的,但通常狀況瓶頸不該該出如今這裏,因此也不用過多在意性能問題,若是真的是由於在很大的循環裏使用而產生性能問題,修改一下也是很輕鬆的事情。

付費解決 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等領域相關問題,靈活訂價,歡迎諮詢,微信 ly50247。

相關文章
相關標籤/搜索