我有以下自动热键脚本:
A:= 5
B := "7"
C := A.B
MsgBox %C%
第三行不起作用。
我期待“57”的输出
我已经尝试过以下方法:
C := %A%.%B%
C := (A).(B)
C := (A.B)
C := (%A%.%B%)
C := (%A%).(%B%)
哪个都不起作用
谁能告诉我该怎么做?
我使用的是1.1.09.04版本
刚刚更新到最新版本1.1.14.01,还是一样
您可以区分表达式(:=
)和“正常”赋值(=
)。您可以通过多种方法来实现您的目标,如以下示例所示:
a := 5
b := 7
x := 6789
; String concatenation
str1 = %a%%b%
; or as an expression
str2 := a b
; or with explicit concatenation operators
str3 := a . b
; Mathematical "concatenation"
; if b has exactly one digit
val1 := a*10 + b
; for any integer
val2 := a * (10**StrLen(x)) + x ; ** is the "power" operator
msgbox, str1 = %str1%`nstr2 = %str2%`nstr3 = %str3%`nval1 = %val1%`nval2 = %val2%
此代码将打印:
str1 = 57
str2 = 57
str3 = 57
val1 = 57
val2 = 56789
在 AHK 中,所有这些方法应该是准等效的:它们产生相同类型的输出。数学方法将变量标记为数字,导致可能出现尾随零,您可能想要Round()
在显示之前。字符串连接的输出也可以用作数字,因为 AHK 在必要时会自动装箱。例如,您可以计算
z := str1 - 1
它将评估为56
.
我个人更喜欢数学方法,因为它会产生实际的数字而不是字符串,这看起来很合乎逻辑。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)