API Basic ForEach ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

For Each / Next

ClassicUO โ€ข Basic

For Each๋Š” ์ˆซ์ž ์ธ๋ฑ์Šค ์—†์ด ๋ฐฐ์—ด์ด๋‚˜ ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์‹œ์ €๋‚˜ ํ•จ์ˆ˜ ์•ˆ์˜ ๋ฐ˜๋ณต๋ฌธ์ด๋ฉฐ API ํ•จ์ˆ˜ ํ˜ธ์ถœ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ •ํ™•ํ•œ ๊ตฌ๋ฌธ

For Each item [AS type] In collection
    statements
Next [item]

๋งค๊ฐœ๋ณ€์ˆ˜

  • item โ€” item: ๋ฐ˜๋ณต ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ๊ธฐ์กด ์ง€์—ญ ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜ ๋˜๋Š” ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ•„๋“œ๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๋ฉฐ ์—†์œผ๋ฉด Option Explicit On์—์„œ๋„ ์ง€์—ญ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ƒ์ˆ˜์—๋Š” ์“ธ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • type โ€” type: ์„ ํƒ์ ์ธ AS type์œผ๋กœ Integer ๋“ฑ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ง€์—ญ ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์š”์†Œ๋งˆ๋‹ค ๋ณ€ํ™˜ํ•ฉ๋‹ˆ๋‹ค. AS๊ฐ€ ์—†์œผ๋ฉด ๊ธฐ์กด ๋ณ€์ˆ˜์˜ ํ˜•์‹์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • collection โ€” collection: ์ง„์ž…ํ•  ๋•Œ ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•˜๋Š” ์‹์ž…๋‹ˆ๋‹ค. ๋ฐฐ์—ด ๋˜๋Š” ์—ด๊ฑฐ ๊ฐ€๋Šฅํ•œ ๋„ค์ดํ‹ฐ๋ธŒ ๊ฐ์ฒด๋ฅผ ๋ฐ›์œผ๋ฉฐ ์Šค์นผ๋ผ๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ค‘์ฒฉ ๋ฐฐ์—ด์€ ๋จผ์ € ํ–‰์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ ์…€์—๋Š” ์•ˆ์ชฝ ๋ฐ˜๋ณต๋ฌธ์„ ์”๋‹ˆ๋‹ค.
  • statements / NEXT item โ€” statements / NEXT item: ๋ณธ๋ฌธ๊ณผ ๋์ž…๋‹ˆ๋‹ค. NEXT ๋’ค ์ด๋ฆ„์€ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์“ฐ๋ฉด ๋ฐ˜๋ณต ๋ณ€์ˆ˜์™€ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. NEXT๋Š” ๋ณ„๋„ ์ค„์— ์”๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

For Each์™€ Next๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. item์€ ์š”์†Œ ๊ฐ’์„ ๋ฐ›์œผ๋ฉฐ ์ž๋™์œผ๋กœ ์ธ๋ฑ์Šค, ID, ๋ฌถ์Œ ์ˆ˜๋Ÿ‰์„ ๋ฐ›๋Š” ๊ฒƒ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ณธ๋ฌธ์˜ RETURN์€ ํ•จ์ˆ˜ ์ „์ฒด๋ฅผ ๋๋ƒ…๋‹ˆ๋‹ค. ์˜ˆ์ œ๋Š” Integer 12, 105, 10์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ค€๋น„ ๋‹จ๊ณ„์—์„œ ์ดˆ๊ธฐํ™” ์ „์— FOR EACH์™€ NEXT๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉฐ ์ž˜๋ชป๋œ ์—ฐ๊ฒฐ์€ SC020์ž…๋‹ˆ๋‹ค. collection์„ ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•œ ๋’ค ์ฐธ์กฐ์™€ ๋ณ„๋„ ์ปค์„œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. item์„ ๋ณ€๊ฒฝํ•ด๋„ ์ปค์„œ๋Š” ์›€์ง์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ฝ์Šต๋‹ˆ๋‹ค. ๋นˆ ๋ฐฐ์—ด์€ ๋ณธ๋ฌธ์„ ๊ฑด๋„ˆ๋›ฐ๊ณ  AS ์—†๋Š” ๊ธฐ์กด ๋ณ€์ˆ˜ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์š”์†Œ๋‚˜ AS ๋ณ€ํ™˜ ์‹คํŒจ๋Š” ์žก์„ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
  • item ๋Œ€์ž…์€ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๊ต์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ค‘์ฒฉ ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋Š” ์ฐธ์กฐ์ด๋ฏ€๋กœ row ์…€ ์ˆ˜์ •์€ ํ•ด๋‹น ํ–‰์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. collection ์žฌ๋Œ€์ž…์€ ํ˜„์žฌ ์—ด๊ฑฐ ๋Œ€์ƒ์„ ๋ฐ”๊พธ์ง€ ์•Š์œผ๋ฉฐ ๊ฐ™์€ ๋ฐฐ์—ด์˜ ๋‹ค์Œ ์š”์†Œ ์ˆ˜์ •์€ ์ฝ์„ ๋•Œ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.
  • Continue For๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด For ๋˜๋Š” For Each์˜ ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ, Exit For๋Š” ๊ทธ ๋ฐ–์œผ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค. ์˜ค๋ฅ˜, RETURN, ์ทจ์†Œ๋Š” ๋„ค์ดํ‹ฐ๋ธŒ ์—ด๊ฑฐ์ž๋ฅผ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค. ์ปฌ๋ ‰์…˜์ด ์—ด๊ฑฐ ์ค‘ ์ˆ˜์ •์„ ๊ธˆ์ง€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ž๋™ ๋ณต์‚ฌ๋ณธ์€ ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฐ˜๋ณต ๋ณ€์ˆ˜๋Š” ์ข…๋ฃŒ ํ›„์—๋„ ํ”„๋กœ์‹œ์ € ์•ˆ์—์„œ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์‹คํ–‰์€ ๋…๋ฆฝ๋œ ์ปค์„œ๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค. IDE ์ด๋ฆ„ ์™„์„ฑ, ๋ฐ˜๋ณต๋ฌธ ํ…œํ”Œ๋ฆฟ, ์„ ์–ธ ์ด๋™๊ณผ ์ผ์‹œ ์ •์ง€ยท์ค‘์ง€๊ฐ€ ์ง€์›๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ์ธ๋ฑ์Šค ์—†๋Š” ํ•ฉ๊ณ„

# values[2]์—๋Š” 2, 4, 6 ์„ธ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. SumItems๋Š” ๋ฐฐ์—ด์„ ๋ฐ›๊ณ  item์€ ๊ฐ ์ˆซ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. total์€ 0์—์„œ 12๊ฐ€ ๋˜๋ฉฐ RETURN์€ Integer 12๋ฅผ Main์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. NEXT item์€ ํ•ด๋‹น ๋ฐ˜๋ณต์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.
Option Explicit On
Function SumItems(values)
    Var total = 0
    For Each item In values
        total += item
    Next item
    Return total
End Function
Sub Main()
    Dim values[2]
    values[0] = 2
    values[1] = 4
    values[2] = 6
    Return SumItems(values)
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

values[2]์—๋Š” 2, 4, 6 ์„ธ ์š”์†Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. SumItems๋Š” ๋ฐฐ์—ด์„ ๋ฐ›๊ณ  item์€ ๊ฐ ์ˆซ์ž๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. total์€ 0์—์„œ 12๊ฐ€ ๋˜๋ฉฐ RETURN์€ Integer 12๋ฅผ Main์— ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. NEXT item์€ ํ•ด๋‹น ๋ฐ˜๋ณต์„ ๋‹ซ์Šต๋‹ˆ๋‹ค.

2. ํ•œ ๋ฒˆ ํ‰๊ฐ€ํ•˜๊ณ  ๋ณ€ํ™˜

# SelectItems๋Š” calls๋ฅผ ByRef๋กœ ๋ฐ›์•„ 1๋กœ ๋Š˜๋ฆฌ๊ณ  ["2", "3"]์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. AS Integer๊ฐ€ 2, 3์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ total=5์ž…๋‹ˆ๋‹ค. item=100์€ ์›๋ณธ์ด๋‚˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Main์€ calls*100+total์ธ Integer 105๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function SelectItems(ByRef calls)
    calls += 1
    Dim values[1]
    values[0] = "2"
    values[1] = "3"
    Return values
End Function
Sub Main()
    Var calls = 0
    Var total = 0
    For Each item As Integer In SelectItems(calls)
        total += item
        item = 100
    Next
    Return calls * 100 + total
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

SelectItems๋Š” calls๋ฅผ ByRef๋กœ ๋ฐ›์•„ 1๋กœ ๋Š˜๋ฆฌ๊ณ  ["2", "3"]์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. AS Integer๊ฐ€ 2, 3์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ total=5์ž…๋‹ˆ๋‹ค. item=100์€ ์›๋ณธ์ด๋‚˜ ์ˆœ์„œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Main์€ calls*100+total์ธ Integer 105๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3. ์ค‘์ฒฉ ๋ฐฐ์—ด

# rows[1][1]์€ ๋‘ ํ–‰์— ๊ฐ๊ฐ ๋‘ ์…€์ด ์žˆ์Šต๋‹ˆ๋‹ค. row๋Š” ํ–‰ ์ฐธ์กฐ, cell์€ 1, 2, 3, 4๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ฐ NEXT๊ฐ€ ์ž๊ธฐ ๋ฐ˜๋ณต๋ฌธ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค. SumGrid์™€ Main์€ Integer 10์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ID๋‚˜ ์ˆ˜๋Ÿ‰์„ ์ž๋™ ์ถ”๋ก ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Option Explicit On
Function SumGrid(rows)
    Var total = 0
    For Each row In rows
        For Each cell In row
            total += cell
        Next cell
    Next row
    Return total
End Function
Sub Main()
    Dim rows[1][1]
    rows[0][0] = 1
    rows[0][1] = 2
    rows[1][0] = 3
    rows[1][1] = 4
    Return SumGrid(rows)
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

rows[1][1]์€ ๋‘ ํ–‰์— ๊ฐ๊ฐ ๋‘ ์…€์ด ์žˆ์Šต๋‹ˆ๋‹ค. row๋Š” ํ–‰ ์ฐธ์กฐ, cell์€ 1, 2, 3, 4๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๊ฐ NEXT๊ฐ€ ์ž๊ธฐ ๋ฐ˜๋ณต๋ฌธ์„ ๋‹ซ์Šต๋‹ˆ๋‹ค. SumGrid์™€ Main์€ Integer 10์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ID๋‚˜ ์ˆ˜๋Ÿ‰์„ ์ž๋™ ์ถ”๋ก ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


en ยท ru ยท uk ยท fr ยท de ยท it ยท es ยท zh-tw ยท ja ยท ko

Basic