作者gt6174 (张昱珩)
看板EzHotKey
标题Re: [请益] Autohotkey 指令
时间Sun Aug 29 19:43:35 2010
※ [本文转录自 EZsoft 看板 #172UtjbO ]
作者: gt6174 (张昱珩) 看板: EZsoft
标题: Re: [请益] Autohotkey 指令
时间: Mon Oct 8 16:44:24 2007
※ 引述《gt6174 (张昱珩)》之铭言:
请问一下,像这篇没有人回答,我就懂了,
可以自 D 吗?
可以的话,我就把这系列文都删罗!
※ 引述《gt6174 (张昱珩)》之铭言:
: 不知道能不能 PO 在这个板?
: 这个板高手云集,所以先 PO 在这个板罗!如果不行,请推文告知,或请板主删除。
: 问题一:
: 请问 AutoHotkey 的 Function() 和 Label: 有什麽差别?
: 问题二:
: 请问 Function() 下的 Global 作用是什麽?
: AutoHotkey 附的说明档对於 Function 下的 Global 指令的说明如下:
: Although a function may call itself recursively, if it passes one of its own
: local variables or non-ByRef parameters to itself ByRef, the new layer's
: ByRef parameter will refer to its own local variable of that name rather than
: the previous layer's. However, this issue does not occur when a function
: passes to itself a global variable, static variable, or ByRef parameter.
: - Local and Global Variables -
: Local Variables:
: All variables referenced or created inside a function are local by default
: (except built-in variables such as Clipboard, ErrorLevel, and A_TimeIdle).
: Each local variable's contents are visible only to lines that lie inside the
: function. Consequently, a local variable may have the same name as a global
: variable and both will have separate contents. Finally, all local variables
: start off blank each time the function is called.
: Global variables:
: To refer to an existing global variable inside a function (or create a new
: one), declare the variable as global prior to using it.
: 虽然看了 Help File,但还是搞不懂 @@"
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.60.0.162
1F:推 josch:不要自d啦...这样别人才能参考啊 10/08 13:28
2F:推 josch:置底文有讲喔^^a 10/08 13:30
那我自己把解答写详细一点:
问题一:请问 AutoHotkey 的 Function() 和 Label: 有什麽差别?
答:function 有 return value,要传入参数。
label 相当於 subrutine,可以没有 return value,也可以不用传入参数。
P.S: 这是 ESMania 论坛 koala 回答的。
问题二:请问 Function() 下的 Global 作用是什麽?
答:AutoHotkey 预设 Function 里的变数与 Function 外的变数是各自独立的,
亦即:
Value1 := 357
Gosub Label_1
Label_1:
Function_135()
Return
Function_135()
{
Value1 := 123
MsgBox, %Value1%
Return
}
MsgBox, %Value1%
这两个 Message Box 显示出来的 Value1 值不一样。
一个是 357,一个是 123。
欲使外部的 Value1 和 Function 内的 Value1 为同一个 Value1,
则要在 Function 中加入 Global 指令。
如把上述的 Function_135 改成如下:
Function_135()
{
Global
Value1 := 123
MsgBox, %Value1%
Return
}
如此一来,这两个 Value1 就会变成一样了。
Message Box 显示出来的值也都是会 123。
--
▄▄
▄
▄ ▄▄ ▄▄ ▄▄ ▄▄
▄ ▄
▄ ▄ ▄ ▄▄ ▄
▄▄
▄ ▄ ▄▄ ▄
▄ ▄ ▄
▄
▄▄ ▄ ▄ ▄ ▄▄ ▄
▄▄ ▄
▄▄
▄▄
▄▄ ▄ ▄▄
▄ ▄
▄ ▄▄▄▄
▄▄▄▄
▄ ▄ ▄ ▄▄ ▄▄ ▄▄
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.60.0.162
※ 编辑: gt6174 来自: 218.167.45.240 (10/08 23:42)
3F:推 yinjing:推一个呱 10/13 01:03
※ 编辑: gt6174 来自: 61.60.0.162 (11/02 17:05)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.42.221.238
※ 编辑: gt6174 来自: 211.21.127.209 (07/30 20:21)