ÀÏ·ÃÀÇ ¸í·É¾î¸¦ °´Ã¼ ¾ÈÀÇ °¢ Å°-°ª ½Ö¸¶´Ù ÇÑ ¹ø¾¿ ¹Ýº¹ÇÕ´Ï´Ù.
For Key [, Value] in Expression
°¢ ¹Ýº¹À» ½ÃÀÛÇÒ ¶§ Å°¸¦ ÀúÀåÇÒ º¯¼öÀÇ À̸§.
ÇöÀç Å°¿¡ ¿¬°üµÈ °ªÀ» ÀúÀåÇÒ º¯¼öÀÇ À̸§.
ExpressionÀº ȸµ¹ÀÌ°¡ ½ÃÀ۵DZâ Àü¿¡ ÇÑ ¹ø¸¸ Æò°¡µË´Ï´Ù. ±×ÀÇ °á°ú°¡ °´Ã¼°¡ ¾Æ´Ï¸é, ½ÇÇàÀº Áï½Ã ȸµ¹ÀÌ ¸öü ´ÙÀ½ ÁÙ·Î Á¡ÇÁÇÕ´Ï´Ù; ±×·¸Áö ¾ÊÀ¸¸é, ¿°Å(enumerator) °´Ã¼¸¦ ¿¶÷Çϱâ À§ÇÏ¿© ±× °´Ã¼ÀÇ _NewEnum()
¸Þ½îµå°¡ È£ÃâµË´Ï´Ù. °¢ ¹Ýº¹À» ½ÃÀÛÇÒ ¶§, ±× ¿°Å °´Ã¼ÀÇ Next() ¸Þ½îµå¸¦ »ç¿ëÇÏ¿© ´ÙÀ½ Å°-°ª ½ÖÀ» ¿¶÷ÇÕ´Ï´Ù. Next()°¡ 0 ¶Ç´Â ºó ¹®ÀÚ¿À» µ¹·ÁÁÖ¸é, ȸµ¹ÀÌ°¡ ³¡³³´Ï´Ù.
for-ȸµ¹ÀÌ¿Í Á¤È®ÇÏ°Ô µ¿µîÇÏÁö´Â ¾ÊÁö¸¸, ´ÙÀ½ ¿¹Á¦´Â ÀÌ Ã³¸® °úÁ¤À» ½Ã¿¬ÇÕ´Ï´Ù:
_enum := (Expression)._NewEnum() if IsObject(_enum) while _enum.Next(Key, Value) { ... }
±âÁ¸ÀÇ Å°-°ª ½ÖÀº ȸµ¹ÀÌ Áß¿¡ º¯°æÇÒ ¼ö ÀÖÁö¸¸, ±×·¯³ª Å°¸¦ »ðÀÔÇϰųª Á¦°ÅÇϸé Ç׸ñÀ» »©¸Ô°Å³ª ¿©·¯ ¹ø ¹Ýº¹ÇÏ´Â ¹®Á¦¸¦ ¾ß±âÇÒ ¼ö ÀÖ½À´Ï´Ù. ÇÑ °¡Áö ¿ìȸåÀº Á¦°ÅÇÒ Å° ¸ñ·ÏÀ» ¸¸µç ´ÙÀ½, ù ¹ø° ȸµ¹ÀÌ°¡ ¿Ï·áµÈ ÈÄ µÎ ¹ø° ȸµ¹À̸¦ »ç¿ëÇÏ¿© Å°¸¦ Á¦°ÅÇÏ´Â °ÍÀÔ´Ï´Ù. Object.Remove(first, last)
¸¦ »ç¿ëÇØ È¸µ¹ÀÌ ¾øÀÌ ÇÑ ¹üÀ§ÀÇ Å°¸¦ Á¦°ÅÇÒ ¼ö ÀÖ´Ù´Â °Í¿¡ ÁÖ¸ñÇϽʽÿÀ.
for-ȸµ¹ÀÌ´Â º¸Åë ´ÙÀ½¿¡ ºí·ÏÀÌ µû¶ó¿É´Ï´Ù. ÀÌ ºí·ÏÀº ȸµ¹ÀÌÀÇ ¸öü¸¦ Çü¼ºÇÏ´Â ¼¼ú¹®ÀÇ Áý´ÜÀÔ´Ï´Ù. ±×·¸Áö¸¸, ¼¼ú¹®ÀÌ Çϳª¸¸ Àִ ȸµ¹ÀÌ´Â ºí·ÏÀ» ¿ä±¸ÇÏÁö ¾Ê½À´Ï´Ù ("if" ±×¸®°í ±×ÀÇ "else"´Â ÀÌ·± ¸ñÀûÀ¸·Î ÇϳªÀÇ ¼¼ú¹®À¸·Î °è¼öµË´Ï´Ù). One True Brace (OTB) ½ºÅ¸ÀÏÀ» ¼±ÅÃÀûÀ¸·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ÀÌ ½ºÅ¸ÀÏÀº ¿©´Â È°°ýÈ£¸¦ ±× ¾Æ·¡°¡ ¾Æ´Ï¶ó °°Àº ÁÙ¿¡ ³ªÅ¸³ªµµ·Ï Çã¿ëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î: for x, y in z {
.
¸ðµç ȸµ¹ÀÌ¿Í ¸¶Âù°¡Áö·Î, Break, Continue ±×¸®°í A_Index¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
Å°(Key)¿Í °ª(Value)Àº ¿°ÅÀÚÀÇ Next() ¸Þ½îµå¿¡ Á÷Á¢ °Ç³×Áý´Ï´Ù. °Å±â¿¡ ÇÒ´çµÇ´Â °ªÀº ¾î¶² Á¾·ùÀÇ °´Ã¼°¡ ¿°ÅµÇ°í Àִ°¡¿¡ µû¶ó ´Ù¸¨´Ï´Ù. COM °´Ã¼¶ó¸é, Key¿¡´Â IEnumVARIANT::Next()°¡ µ¹·ÁÁÖ´Â °ªÀÌ ´ã±â°í Value¿¡´Â ±×ÀÇ variant À¯ÇüÀ» °¡¸®Å°´Â ¹øÈ£°¡ ´ã±é´Ï´Ù. ¿¹¸¦ µé¾î, Scripting.Dictionary °´Ã¼¿Í »ç¿ëµÉ ¶§, °¢ Key´Â »çÀüÀ¸·ÎºÎÅÍ ¿Â Å°°¡ ´ã±â°í Value´Â ÀüÇüÀûÀ¸·Î ¹®ÀÚ¿¿¡ 8, Á¤¼ö¿¡ 3ÀÌ ´ã±é´Ï´Ù. À¯Çü ÄÚµå ¸ñ·ÏÀº ComObjType¸¦ ÂüÁ¶ÇϽʽÿÀ.
[v1.0.96.00+]: SafeArray¸¦ ¿°ÅÇÒ ¶§, Key¿¡´Â ÇöÀç ¿ø¼Ò°¡ ´ã±â°í Value¿¡´Â ±×ÀÇ variant À¯ÇüÀÌ ´ã±é´Ï´Ù.
¿°Å °´Ã¼, Object.NewEnum(), While-ȸµ¹ÀÌ, Loop, Until, Break, Continue, ºí·Ï
; °´Ã¼ÀÇ Å°-°ª ½ÖÀ» ³ª¿ÇÕ´Ï´Ù: colours := Object("red", 0xFF0000, "blue", 0x0000FF, "green", 0x00FF00) ; À§ÀÇ Ç¥Çö½ÄÀº ¾Æ·¡ÀÇ "colours" ´ë½Å¿¡ Á÷Á¢ »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù: for k, v in colours s .= k "=" v "`n" MsgBox % s
; ¿¸° Ž»ö â°ú ÀÎÅÍ³Ý ÀͽºÇ÷η¯ âÀ» ¸ðµÎ ³ª¿ÇÕ´Ï´Ù: for window in ComObjCreate("Shell.Application").Windows windows .= window.LocationName " :: " window.LocationURL "`n" MsgBox % windows
/* Class: CEnumerator ¼ýÄ¡ Å°¸¦ ¹Ýº¹ÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ´Â ¹ü¿ë ¿°Å °´Ã¼. ¹è¿Àº ¹Ýº¹ Áß¿¡ º¯°æÇؼ´Â ¾È µË´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, ¹Ýº¹ ¹üÀ§°¡ À¯È¿ÇÏÁö ¾Ê°Ô µË´Ï´Ù. ¹è¿ °æ°è¿¡ ´ëÇÏ¿© ¸ÂÃã MaxIndex() ÇÔ¼ö¸¦ Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù. 1°ú ÃÖ´ë À妽º »çÀÌ¿¡ ºüÁø ¿ø¼Ò°¡ ÀÖ´Ù¸é, ¹Ýº¹µÇ±â´Â ÇÏÁö¸¸ °ªÀº ""°¡ µË´Ï´Ù. ÀÌ°ÍÀº ÁøÂ¥ Èñ¼Ò Çà¿Àº ÀÌ ¿°Å °´Ã¼°¡ ¼³°è»ó Áö¿øµÇÁö ¾Ê´Â´Ù´Â ¶æÀÔ´Ï´Ù. °´Ã¼°¡ ÀÌ ¹Ýº¹ÀÚ¸¦ »ç¿ëÇÏ°Ô ¸¸µé·Á¸é, ´ÙÀ½ ÇÔ¼ö¸¦ Ŭ·¡½º Á¤ÀÇ¿¡ »ðÀÔÇϽʽÿÀ: _NewEnum() { return new CEnumerator(this) } Source: http://www.autohotkey.com/board/topic/2667-suggestions-on-documentation-improvements/?p=531509 */ ; ¿°Å °´Ã¼¸¦ ¹Ýº¹ÇÕ´Ï´Ù For k, v in Test MsgBox %k%=%v% ; »ç¿ë¹ýÀ» ½Ã¿¬Çϱâ À§ÇØ Å¬·¡½º¸¦ Å×½ºÆ®ÇÕ´Ï´Ù class Test { static Data := ["abc", "def", "ghi"] _NewEnum() { return new CEnumerator(this.Data) } } class CEnumerator { __New(Object) { this.Object := Object this.first := true ; ¼Óµµ¸¦ À§ÇØ Ä³½¬ÇÕ´Ï´Ù. ¸ÂÃã MaxIndex() ÇÔ¼ö°¡ ¼öÇ༺´ÉÀÌ ÁÁÁö ¾ÊÀ» °æ¿ì À¯¿ëÇÕ´Ï´Ù. ; ±× ÀÀ´äÀº ¹Ýº¹ µ¿¾È¿¡ Å°-°ª ½ÖÀÌ »ðÀÔµÇÁö ¾Ê´Â´Ù´Â ¶æÀÔ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é ¹üÀ§°¡ ¹«È¿°¡ µÇ¾î ¹ö¸± °ÍÀÔ´Ï´Ù. this.ObjMaxIndex := Object.MaxIndex() } Next(ByRef key, ByRef value) { if (this.first) { this.Remove("first") key := 1 } else key ++ if (key <= this.ObjMaxIndex) value := this.Object[key] else key := "" return key != "" } }