请教关于H_v2的Loop,parse

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

Moderators: tmplinshi, arcticir

black1396
Posts: 10
Joined: 08 Jun 2016, 11:09

请教关于H_v2的Loop,parse

08 Jun 2016, 11:56

新手想尝试下ahk_h版的多线程,在慢慢把常用的几个.ahk往H_v2的方式改.碰到几个问题和一点疑问,来请教下.

1. 测试中遇到一个问题

Code: Select all

::
test:="a,b,c,d"
Loop,Parse,% test,`,
{
  Msgbox,%A_Index% is %A_LoopField%
}
Loop,Parse,% test,`,
这一行中的"% test" 写成 "test",或"%test%都不正常,尝试的几个写法只有"% test"是预期的表现.

请教这是设计如此么? 还是哪里出了什么问题?

系统是win10 x64, ahk版本是AutoHotkey_H Unicode 32-bit v2.0-a074-H013.

2. 我在ahkdll-v2-release-master (20160516) 附带的帮助文件AutoHotkey_H v2.chm里找到Loop (parse a string)部份,帮助中一个例子如下:

Code: Select all

; Example #5: Determining which delimiter was encountered.

; Initialize string to search.
Colors = red,green|blue;yellow|cyan,magenta
; Initialize counter to keep track of our position in the string.
Position := 0

Loop, Parse, Colors, `,|;
{
    ; Calculate the position of the delimiter at the end of this field.
    Position += StrLen(A_LoopField) + 1
    ; Retrieve the delimiter found by the parsing loop.
    Delimiter := SubStr(Colors, Position, 1)

    MsgBox Field: %A_LoopField%`nDelimiter: %Delimiter%
}
Colors = red,green|blue;yellow|cyan,magenta
这一行中的"="是可以的,还是书写错误? 应该是" := " 吗?

Loop, Parse, Colors, `,|;
这一行中看到Colors前面不需要%,让我对问题1更加不解.

3. 在 https://autohotkey.com/v2/v2-changes.htm
Changes from v1.1 to v2.0
里提到
Legacy Syntax Removed
Removed literal assignments: var = value
Removed If Var =|<>|<|>|<=|>= Value; these are now interpreted as expressions.
是说现在只能用:=赋值的意思么?
因为v1也一直习惯用:=,不知道之前是不是能用=直接赋值的.不清楚这条改动确切的意思.

4. 最后一个问题
Loop,parse, % test
在循环体内,改变test的值,会不会影响整个循环?

比如我尝试了下面这个写法,test的值看到改了,但是循环次数没改变.

Code: Select all

::
test:="a,b,c,d"
Loop,Parse,% test,`,
{
  Msgbox,%A_Index% is %A_LoopField%
  test:=test . "," A_LoopField
  MsgBox % test
}
arcticir
Posts: 578
Joined: 17 Nov 2013, 11:32

Re: 请教关于H_v2的Loop,parse

09 Jun 2016, 12:04

1, 这个参数,在V1必须是变量,而V2改成了字符串. 所以 %test% 是正常的. V2有很多这方面的改变,需要注意.
2, 书写错误.现在单个的 "=" 只用来判断.
4,使用的是副本,所以没有影响.

欢迎来到V2~
black1396
Posts: 10
Joined: 08 Jun 2016, 11:09

Re: 请教关于H_v2的Loop,parse

10 Jun 2016, 06:04

谢谢回复.

看了回复,又重新试了下%test%正常了,奇怪,最开始就是用%test%的,一直报错.最后没想法了,胡乱写个% test意外通过了.
对V2的这个改变有些概念了,很多地方只要加上一对%就通过了.只是,有的地方,理解起来还稍微有点混乱.

比如V1曾用的一个函数里有一句

Code: Select all

x%All%:=% x%All%%A_Index%
用V2就报错,%不成对.暂时改成了下面这样,不报错了,还没运行过,不知道是不是预想的那样.

Code: Select all

x%All%:=%x%All%%A_Index%%
但是,V2是根据什么来自动配对%的?
假如把%看成双引号的话,在很多语言里,这都是很混乱啊.
arcticir
Posts: 578
Joined: 17 Nov 2013, 11:32

Re: 请教关于H_v2的Loop,parse

10 Jun 2016, 09:45

% 的问题没遇到过, V2于V1的变更文档里应该有说明,你找找看.

Return to “请求帮助”

Who is online

Users browsing this forum: No registered users and 8 guests