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

DIM / REDIM / PRESERVE

ClassicUO โ€ข Basic

DIM์€ ๋™์  ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ  REDIM์€ ์ €์žฅ ๊ณต๊ฐ„์„ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค. PRESERVE๋Š” ๊ฒน์น˜๋Š” ์ธ๋ฑ์Šค์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ฐจ์›์—๋Š” ๊ฐœ์ˆ˜๊ฐ€ ์•„๋‹Œ ํฌํ•จ๋˜๋Š” ์ƒํ•œ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ ์ „์— ์š”์†Œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•˜์„ธ์š”.

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

DIM name[upper]
DIM name(upper) AS type
DIM grid[xUpper][yUpper]
DIM grid(xUpper, yUpper)
REDIM name[upper]
REDIM PRESERVE name[upper]
name[index] = value
GetArrayLength(name)

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

  • name โ€” name: ๋ฐฐ์—ด ๋ณ€์ˆ˜. DIM์€ ์„ ์–ธํ•˜๊ณ  REDIM์€ ๊ธฐ์กด ๋ณ€์ˆ˜์˜ ์ €์žฅ ๊ณต๊ฐ„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. items[i], grid[x][y]๋กœ ์ฝ๊ณ  ์”๋‹ˆ๋‹ค.
  • upper โ€” upper: Integer๋กœ ๋ณ€ํ™˜๋˜๋Š” ์‹์ด๋ฉฐ ์™ผ์ชฝ๋ถ€ํ„ฐ ๊ฐ๊ฐ ํ•œ ๋ฒˆ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. DIM items[2]๋Š” 0..2์˜ ์„ธ ์นธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. -1์€ ๋นˆ ์ฐจ์›์ž…๋‹ˆ๋‹ค. ๋” ์ž‘์€ ์ƒํ•œ๊ณผ ๊ธธ์ด ์˜ค๋ฒ„ํ”Œ๋กœ๋Š” ์˜ค๋ฅ˜์ด๋ฉฐ ์‹ค์ œ ํฌ๊ธฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ์—๋„ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค.
  • PRESERVE โ€” PRESERVE: REDIM์˜ ์„ ํƒ ํ‚ค์›Œ๋“œ. ๊ฒน์น˜๋Š” ์ธ๋ฑ์Šค๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ค„์ด๋ฉด ์ƒˆ ๋ฒ”์œ„ ๋ฐ–์˜ ๊ฐ’์€ ์—†์–ด์ง‘๋‹ˆ๋‹ค. ์ƒ๋žตํ•˜๋ฉด ์ƒˆ ์นธ์€ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • AS type โ€” AS type: DIM ๋ฐฐ์—ด ์„ ์–ธ์—์„œ ํ—ˆ์šฉํ•˜๋Š” ์ฃผ์„ ์„ฑ๊ฒฉ์˜ ํ‘œ๊ธฐ๋กœ, ์š”์†Œ์˜ ํ˜•์‹ ์ง€์ •ยท์ดˆ๊ธฐํ™”ยท๋ณ€ํ™˜์„ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์ข…๋ฅ˜์˜ ๊ฐ’์„ ํ•จ๊ป˜ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

DIM๊ณผ REDIM์€ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค(Unit). items[i]๋Š” ์ €์žฅ ๊ฐ’๊ณผ ์‹ค์ œ ์ข…๋ฅ˜ Integer, Decimal, String, Array ๋˜๋Š” Object๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์นธ์„ ์ฝ์œผ๋ฉด 0์ด๋‚˜ FALSE ๋Œ€์‹  ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. GetArrayLength(array)๋Š” ๋ฐ”๊นฅ ๊ธธ์ด๋ฅผ Integer๋กœ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋ฐฐ์—ด์ด ์•„๋‹Œ ๊ฐ’์—๋Š” 0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • DIM grid(1, 2)๋Š” grid[1][2], ์ฆ‰ ๋‘ ํ–‰์— ๊ฐ๊ฐ ์„ธ ์นธ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์ƒํ•œ ์•ˆ์˜ ํ•จ์ˆ˜ ํ˜ธ์ถœ์€ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ์ ‘๊ทผ์€ grid[1][2]๋กœ ํ•˜๋ฉฐ ์‹์˜ ์†Œ๊ด„ํ˜ธ๋Š” ํ•จ์ˆ˜ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค.
  • ๋Œ€์ž…๊ณผ ByVal ์ „๋‹ฌ์€ ์š”์†Œ๊ฐ€ ์•„๋‹Œ ์ฐธ์กฐ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ณ„์นญ์—์„œ๋„ ๊ณต์œ  ์นธ์˜ ๋ณ€๊ฒฝ์ด ๋ณด์ž…๋‹ˆ๋‹ค. REDIM์€ ์ƒˆ ๋ฐฐ์—ด์„ ์—ฐ๊ฒฐํ•˜๊ณ  ๊ธฐ์กด ๋ณ„์นญ์€ ์ด์ „ ๋ฐฐ์—ด์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. PRESERVE๋Š” ์ค‘์ฒฉ ๋ฐฐ์—ด์˜ ๊ฒน์น˜๋Š” ์ขŒํ‘œ๋ฅผ ๋ณต์‚ฌํ•˜์ง€๋งŒ ์ž„์˜ ๊ฐ์ฒด๋ฅผ ์™„์ „ํžˆ ๊นŠ์€ ๋ณต์‚ฌํ•˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. DIM items[2]=5 ๊ฐ™์€ DIM/REDIM ์ดˆ๊ธฐํ™” ์‹์€ SC014๋กœ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ๊ฐ ์นธ์„ ๋ณ„๋„ ์ค„์—์„œ ๋Œ€์ž…ํ•˜์„ธ์š”. ์ž˜๋ชป๋œ ์ธ๋ฑ์Šค, ์—†๋Š” ์š”์†Œ ๋ฐ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ์ฝ๊ธฐ๋Š” ์ฒ˜๋ฆฌ ๊ฐ€๋Šฅํ•œ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
  • ์ด Basic ๋ฐฉ์–ธ์˜ ๋™์  ์š”์†Œ ์ข…๋ฅ˜์™€ ๋‹ค์ฐจ์› PRESERVE๋Š” VB.NET ํ˜•์‹ ๋ฐฐ์—ด๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์ €์žฅ๋œ ๋…ผ๋ฆฌ ๊ฐ’์€ 1/0์ด์ง€๋งŒ ์ผ๋ฐ˜ ์ˆซ์ž๋‚˜ ๋ฐฐ์—ด ๊ธธ์ด๋Š” ์„ฑ๊ณต ํ”Œ๋ž˜๊ทธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • RETURN array๋Š” ๋ฐฐ์—ด ์ฐธ์กฐ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ์ƒ์„ฑ ํ•จ์ˆ˜๊ฐ€ ๋๋‚˜๋„ ๋ฐ์ดํ„ฐ๋Š” ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ด๋„ ์š”์†Œ๋ฅผ ๋ณต์‚ฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ณตํ†ต ํ•จ์ˆ˜๋กœ Module ํ•„๋“œ์šฉ ๋ฐฐ์—ด์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋…๋ฆฝ ์‹คํ–‰์€ DIM์„ ๋‹ค์‹œ ์‹คํ–‰ํ•  ๋•Œ ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ์ดˆ๊ธฐํ™”ํ•œ ์š”์†Œ ํ•ฉ๊ณ„

# Abs(-2)๋Š” ์ƒํ•œ 2๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ ์„ธ ์นธ์— 2, 4, 6์„ ๋„ฃ์Šต๋‹ˆ๋‹ค. Sum์€ ByVal๋กœ ์ฐธ์กฐ๋ฅผ ๋ฐ›๊ณ  0..GetArrayLength(items)-1์„ ์ˆœํšŒํ•˜์—ฌ 12๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๋ณด์กฐ ํ•จ์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์š”์†Œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ๋นˆ ๋ฐฐ์—ด๋„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
FUNCTION Sum(ByVal items)
    VAR total = 0
    VAR i = 0
    FOR i = 0 TO GetArrayLength(items) - 1
        total += items[i]
    NEXT
    RETURN total
END FUNCTION
SUB Main()
    DIM items(Abs(-2))
    items[0] = 2
    items[1] = 4
    items[2] = 6
    RETURN Sum(items)
END SUB

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

Abs(-2)๋Š” ์ƒํ•œ 2๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ ์„ธ ์นธ์— 2, 4, 6์„ ๋„ฃ์Šต๋‹ˆ๋‹ค. Sum์€ ByVal๋กœ ์ฐธ์กฐ๋ฅผ ๋ฐ›๊ณ  0..GetArrayLength(items)-1์„ ์ˆœํšŒํ•˜์—ฌ 12๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ๋ณด์กฐ ํ•จ์ˆ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์š”์†Œ๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š๊ณ  ๋นˆ ๋ฐฐ์—ด๋„ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

2. ๊ฐ’์„ ์œ ์ง€ํ•˜๋ฉฐ ํ™•์žฅ

# values์—๋Š” 7๊ณผ 8์ด ์žˆ์Šต๋‹ˆ๋‹ค. REDIM PRESERVE values(2)๋Š” ์„ธ ์นธ์„ ๋งŒ๋“ค๊ณ  ์ธ๋ฑ์Šค 0, 1์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์นธ 2๋ฅผ 9๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. Main์€ 7*100+8*10+9=789๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
SUB Main()
    DIM values[1]
    values[0] = 7
    values[1] = 8
    REDIM PRESERVE values(2)
    values[2] = 9
    RETURN values[0] * 100 + values[1] * 10 + values[2]
END SUB

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

values์—๋Š” 7๊ณผ 8์ด ์žˆ์Šต๋‹ˆ๋‹ค. REDIM PRESERVE values(2)๋Š” ์„ธ ์นธ์„ ๋งŒ๋“ค๊ณ  ์ธ๋ฑ์Šค 0, 1์„ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์นธ 2๋ฅผ 9๋กœ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. Main์€ 7100+810+9=789๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3. ๋ณ„์นญ๊ณผ ์ƒˆ ์ €์žฅ ๊ณต๊ฐ„

# grid๋Š” ๋‘ ํ–‰์— ๊ฐ๊ฐ ๋‘ ์นธ์ž…๋‹ˆ๋‹ค. alias๋Š” ๊ฐ™์€ ๋ฐฐ์—ด์„ ์ฐธ์กฐํ•˜๋ฏ€๋กœ alias[0][1]=9๋Š” grid๋„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. PRESERVE๋Š” grid๋ฅผ ์„ธ ํ–‰์œผ๋กœ ๋Š˜๋ ค 9๋ฅผ ๋ณด์กดํ•˜๊ณ  alias๋Š” ๋‘ ํ–‰์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. "9:3:2"๋Š” ๋ณด์กด๋œ ๊ฐ’, ์ƒˆ ๋ฐ”๊นฅ ๊ธธ์ด, ์ด์ „ ๋ณ„์นญ์˜ ๊ธธ์ด์ž…๋‹ˆ๋‹ค.
Option Explicit On
SUB Main()
    DIM grid[1][1]
    grid[0][1] = 4
    VAR alias = grid
    alias[0][1] = 9
    REDIM PRESERVE grid[2][1]
    RETURN CStr(grid[0][1]) + ":" + CStr(GetArrayLength(grid)) + ":" + CStr(GetArrayLength(alias))
END SUB

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

grid๋Š” ๋‘ ํ–‰์— ๊ฐ๊ฐ ๋‘ ์นธ์ž…๋‹ˆ๋‹ค. alias๋Š” ๊ฐ™์€ ๋ฐฐ์—ด์„ ์ฐธ์กฐํ•˜๋ฏ€๋กœ alias[0][1]=9๋Š” grid๋„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. PRESERVE๋Š” grid๋ฅผ ์„ธ ํ–‰์œผ๋กœ ๋Š˜๋ ค 9๋ฅผ ๋ณด์กดํ•˜๊ณ  alias๋Š” ๋‘ ํ–‰์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. "9:3:2"๋Š” ๋ณด์กด๋œ ๊ฐ’, ์ƒˆ ๋ฐ”๊นฅ ๊ธธ์ด, ์ด์ „ ๋ณ„์นญ์˜ ๊ธธ์ด์ž…๋‹ˆ๋‹ค.


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

Basic