【已解决】加不加括号,效果截然不同

遇到了问题?请先进行搜索(中文和英文),然后在此提问

Moderators: tmplinshi, arcticir

shingu
Posts: 11
Joined: 15 Apr 2014, 20:21

【已解决】加不加括号,效果截然不同

Post by shingu » 15 Apr 2014, 20:31

附件中的代码就是帮助文档中Gui ListView 控件中的示例,我稍微做了一点修改

Code: Select all

GuiContextMenu:  ; 运行此标签来响应右键点击或按下 Appskey.
if (A_GuiControl <> MyListView)  ; 仅在 ListView 中点击时才显示菜单.
    return
; 在提供的坐标处显示菜单, A_GuiX 和 A_GuiY.  应该使用这些
; 因为即使用户按下 Appskey 它们也会提供正确的坐标:
Menu, MyContextMenu, Show, %A_GuiX%, %A_GuiY%
return

就是在if判断条件加上了一对括号,结果竟然迥异。
Attachments
listview_demo.rar
(3.37 KiB) Downloaded 296 times
Last edited by amnesiac on 22 Aug 2014, 21:00, edited 2 times in total.
Reason: 调整为【已解决】。
wz520
Posts: 29
Joined: 01 Jan 2014, 21:32
Location: China

Re: 【求助】加不加括号,效果截然不同

Post by wz520 » 16 Apr 2014, 00:27

在 AHK 里本来就是两种语法,尽管违背了很多人的直觉。
看看帮助里的 “If" 和 "If (expression)" 吧
shingu
Posts: 11
Joined: 15 Apr 2014, 20:21

Re: 【求助】加不加括号,效果截然不同

Post by shingu » 16 Apr 2014, 03:26

加上括号
GuiContextMenu:
if (A_GuiControl <> MyListView)
return
Menu, MyContextMenu, Show, %A_GuiX%, %A_GuiY%
return

只有在界面空白处点击右键会弹出菜单,这与本意不符!

不加括号
GuiContextMenu:
if A_GuiControl <> MyListView
return
Menu, MyContextMenu, Show, %A_GuiX%, %A_GuiY%
return

只有在MyListView控件上点击右键会弹出菜单
shingu
Posts: 11
Joined: 15 Apr 2014, 20:21

Re: 【求助】加不加括号,效果截然不同

Post by shingu » 16 Apr 2014, 03:36

wz520 wrote:在 AHK 里本来就是两种语法,尽管违背了很多人的直觉。
看看帮助里的 “If" 和 "If (expression)" 吧
看过这两段的说明,但是还是有点理解不了。

不加括号是传统型,加括号是表达式
User avatar
amnesiac
Posts: 186
Joined: 22 Nov 2013, 03:08
Location: Egret Island, China
Contact:

Re: 【求助】加不加括号,效果截然不同

Post by amnesiac » 19 Apr 2014, 08:56

shingu wrote:
wz520 wrote:在 AHK 里本来就是两种语法,尽管违背了很多人的直觉。
看看帮助里的 “If" 和 "If (expression)" 吧
看过这两段的说明,但是还是有点理解不了。

不加括号是传统型,加括号是表达式
其中有历史渊源,AutoHotkey 最初参照 AutoIt v2,而后者是命令式语言。所以目前两种用法并存,在以后 AutoHotkey v2 中有可能会成为纯表达式用法。
刚接触时,建议习惯用表达式用法。

补充:你虽然看了 If 传统型和表达式的用法,实际上还不理解。

Code: Select all

if A_GuiControl <> MyListView 
这里 MyListView 是值,含义即是 A_GuiControl 变量的值不是 MyListView。

Code: Select all

if (A_GuiControl <> MyListView)
这里 MyListView 是变量,实际上你脚本中没有这个变量,即值为空,含义即是 A_GuiControl 的值不为空。
你理解了,才会知道怎样正确表达你的本意。
AutoHotkey 学习指南(Beauty of AutoHotkey)
I do not make codes, and only a porter of AutoHotkey: from official to Chinese, from other languages to AutoHotkey, and show AutoHotkey to ordinary users sometimes.
Post Reply

Return to “请求帮助”