在接觸一門新的編程語言后,了解如何對變量賦值幾乎是第一步。有了變量,才可以對變量進行數(shù)學(xué)運算或者邏輯判斷,將調(diào)用函數(shù)得到的結(jié)果存入變量也需要賦值操作。可見賦值運算符的重要性。
但很多 AHK 初學(xué)者(包括其他編程語言的老手)驚奇地發(fā)現(xiàn) AHK 有兩種賦值運算符,= 和 :=,而且它們的用法居然不一樣。一時摸不到頭腦,甚至對 AHK 頓生反感。當(dāng)然這不能怪用戶,賦值操作如此混亂的語言,恐怕無出其右了。但如果掌握了,也會發(fā)現(xiàn)在賦值操作上,AHK 要比其他語言更為靈活和方便。
:= 的用法
先介紹其中相對好理解的 := 運算符。
:= 和其他語言的 = 用法基本一致,來看幾個例子:
a := 123
b := 456.789
c := "text"
d := a
e := a . c
可以看到如果將變量賦值成整數(shù)、浮點數(shù)、字符串,直接寫就好了。我們也可以把一個已經(jīng)存在的變量賦值給一個新變量。這和其他語言中 = 的用法并無二致。.(點運算符)用來拼接字符串,這個在后續(xù)文章中也會單獨介紹。
如果我們將一個不存在的變量賦值給一個新變量,像這樣:
f := abc
那么 f 將是一個空字符串,也就是和這樣效果一樣:
f := ""
= 的用法
然后我們再來看 =。
= 后邊的內(nèi)容全部被認為是字符串,看幾個例子:
a = 123
b = 456.789
c = text
d = a
e = %a%
f = %a%456
注意這里邊的 a 和 b 已經(jīng)不是整數(shù)和浮點數(shù)了,而全是字符串。d 的值也不是 123,而是字符串 a。那么是不是 = 只能用來將一個字符串常量賦值給一個變量呢?如果這樣的話,= 基本也沒有存在的必要了。我們可以看下 e = %a%,里邊有一個奇怪的 % 符號(% 也是 AHK 中的大坑,以后我會專門寫文章介紹),%a% 的意思是取 a 變量的值,所以 e 的值是字符串 123,同理 f 的值是字符串 123456。是不是 = 比 := 稍微難理解一些?
另外 = 還有一些高級用法,比如將多行文本賦值給一個變量:
a =
(
123
456
789
)
在括號中的多行文本會被賦值給 a,這在某些需要賦值大段文字的場景是非常方便的。
用 = 賦值空字符串也更加簡潔:
a =
(其實 a := 這樣用也是可以的,雖然看起來怪怪的。)
此外在某些場景只能用 = 賦值,比如上一篇文章中處理命令行參數(shù)的場景:
argc = %0%
argv1 = %1%
使用場景
既然 = 和 := 在多數(shù)情況都可以實現(xiàn)相同的功能,什么場景應(yīng)該使用 =,什么場景應(yīng)該使用 := 呢?
這個并沒有明確的規(guī)定,可以因人而異,根據(jù)自己的習(xí)慣來。但盡量前后統(tǒng)一,以免給自己和別人帶來麻煩。
一般來說,使用 := 是更加嚴謹?shù)?,這也是和其他編程語言的用法對齊,更易于被接受。但也并不是棄 = 而不用,在某些場景,比如賦值大段文字,= 還是非常方便的。
關(guān)于 = 的用法,此文只是簡單介紹幾個例子,還有更多的用法期待大家發(fā)掘。
付費解決 Windows、Linux、Shell、C、C++、AHK、Python、JavaScript、Lua 等領(lǐng)域相關(guān)問題,靈活定價,歡迎咨詢,微信 ly50247。