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"๋ ๋ณด์กด๋ ๊ฐ, ์ ๋ฐ๊นฅ ๊ธธ์ด, ์ด์ ๋ณ์นญ์ ๊ธธ์ด์ ๋๋ค.