API Basic Variables ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
VAR / DIM
ClassicUO โข Basic
VAR์ ์ค์นผ๋ผ DIM์ ์ด๋ฆ ์๋ ๊ฐ์ ์ ์ธํฉ๋๋ค. ๋์ ์ ํํ์์ ๊ณ์ฐํ์ฌ ๊ฒฐ๊ณผ๋ฅผ ์ ์ฅํฉ๋๋ค. ํ๋ก์์ ๋ด๋ถ ์ ์ธ์ ํด๋น ํธ์ถ์ ์ง์ญ ๋ณ์์ด๋ฉฐ ์ธ๋ถ ์ ์ธ์ ์คํฌ๋ฆฝํธ ์ ์ญ ๋ณ์์ ๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
VAR name [AS type] [= expression] [, name ...]
DIM name [AS type] [= expression] [, name ...]
name = expression
LET name = expression
SET name = expression
๋งค๊ฐ๋ณ์
nameโ ๋ฐ์ดํ ์๋ ๋ณ์ ์ด๋ฆ. ์๋ฌธ์, ์ซ์, ๋ฐ์ค์ ์ฌ์ฉํ๊ณ ์๋ฌธ์๋ ๋ฐ์ค๋ก ์์ํ์ธ์. ๊ฐ์ ์ฒ ์๋ฅผ ์ ์งํ๊ณ ์ธ์ด ํค์๋๋ ํผํ์ธ์.typeโ ์ ํ์ ์ธ AS ํ์. Integer/Long/Short/Byte๋ ์์ง์ ๋ถํธ ์๋ 32๋นํธ ์ ์ ๋ณํ, Double/Single/Decimal์ ๋ฐฐ์ ๋ฐ๋ ์ซ์, String์ ํ ์คํธ, Boolean/Bool์ ๋ ผ๋ฆฌ๊ฐ์ ์ฌ์ฉํฉ๋๋ค. Variant/Object๋ ๊ฐ์ ์ข ๋ฅ๋ฅผ ์ ์งํฉ๋๋ค. VB.NET์ ๊ฐ๋ณ byte/short/long ๋ฒ์๋ฅผ ์ ์ฉํ๋ ๋ณ์นญ์ ์๋๋๋ค.expressionโ VAR/DIM์ ์ด๊ธฐ์์ ์ ํ ์ฌํญ์ด๊ณ ๋์ ์ ์ค๋ฅธ์ชฝ ํํ์์ ํ์์ ๋๋ค. ํด๋น ์ค์ด ์คํ๋ ๋ ๊ณ์ฐํฉ๋๋ค. AS String์ ์ด๊ธฐ์์ด ์์ผ๋ฉด ๋น ๋ฌธ์์ด์ด๋ฉฐ ํ์ ์๋ ์ซ์์ Boolean์ ๊ธฐ๋ณธ๊ฐ์ 0์ ๋๋ค. ์ด๊ธฐ์ ์๋ ๋ฌดํ์ VAR์ VAR AS Variant/Object๋ Unit(๊ฐ ์์)์ด๋ฉฐ ์ค์นผ๋ผ DIM์ 0์ ์ ๊ณตํฉ๋๋ค. ํ์ ์๋ ๋ณ์๋ ๋์ค์ ๋ค๋ฅธ ์ข ๋ฅ์ ๊ฐ์ ์ ์ฅํ ์ ์์ต๋๋ค.
๋ฐํ๊ฐ
๊ฐ์ด ์์ต๋๋ค. VAR, DIM, ๋์ ๋ฌธ์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ์ง ์์ต๋๋ค. ์ด๋ฆ์ ์ฝ์ผ๋ฉด ์ ์ฅ๋ ๊ฐ์ ์ป์ต๋๋ค. ์์ ์ RETURN์ Main์์ ๊ฐ์ ๋ฐํํ๋ฉฐ DIM์ ๋ฐํ๊ฐ์ด ์๋๋๋ค.
๋์
- ์ ๊ตฌ๋ฌธ์ ๋๊ดํธ๋ ์ ํ ์ฌํญ์ ๋ํ๋ ๋๋ค. AS๋ ์ด๊ธฐ์ ์ฃผ์์ ๋๊ดํธ๋ฅผ ์ ๋ ฅํ์ง ๋ง์ธ์. ๋ฐฐ์ด DIM์ ๋ค๋ฅธ ์ ์ธ ํ์์ ์ฌ์ฉํฉ๋๋ค.
- ์ด ์์ง์์ LET์ SET๋ ์ผ๋ฐ ๋์ ์ ํธํ ํ์์ ๋๋ค. Option Explicit On์์๋ ์ด๋ฆ์ ์ ์ธํ์ง ์์ต๋๋ค. AS ํ์์ ๋์ค์ ๋์ ์๋ ์ ์ฉ๋๋ฉฐ ์๋ชป๋ ๋ณํ์ด๋ ์ง์ํ์ง ์๋ ํ์์ ์คํ ์ค๋ฅ๋ฅผ ์ผ์ผํต๋๋ค.
- ์ง์ญ ์ด๋ฆ์ ํ๋ก์์ ํธ์ถ์ ์ํฉ๋๋ค. IF ์์์ ์ ์ธํด๋ ๋ณ๋์ ๋ธ๋ก ๋ฒ์๋ฅผ ๋ง๋ค์ง ์์ต๋๋ค. ์คํํ์ง ์์ ๋ถ๊ธฐ๋ ์คํ ์ค ๊ฐ์ ๋ง๋ค์ง ์์ต๋๋ค. ๋ถ๊ธฐ ๋ค์์ ๊ฐ์ด ํ์ํ๋ฉด ๋ถ๊ธฐ ์ ์ ์ ์ธํ์ธ์.
- Injection ํธํ ๊ท์น: ํธ์ถ๋ ํ๋ก์์ ๋ ํธ์ถ์์ ํ์ฌ ์ ์ญ ์ค์นผ๋ผ ๊ฐ๊ณผ AS ํ์์ ์์ํฉ๋๋ค. ํธ์ถ๋ ํ๋ก์์ ์์ ์ค์นผ๋ผ๋ฅผ ๋ค์ ๋์ ํด๋ ํธ์ถ์๋ ๊ฐฑ์ ๋์ง ์์ต๋๋ค. ๊ฐฑ์ ํ๋ ค๋ฉด ์ ๊ฐ์ ๋ฐํํ๊ฑฐ๋ BYREF ์ธ์๋ฅผ ์ฌ์ฉํ์ธ์. Array/Object ๊ฐ์ ๊น๊ฒ ๋ณต์ ํ๋ ๊ฒ์ ์๋๋๋ค. ์ ์ต์์ ํธ์ถ์ ์ ์ญ ๋ณ์๋ฅผ ๋ค์ ์ด๊ธฐํํ๋ฉฐ ์ง์ญ ์ ์ธ์ ์ ์ญ ์ ์ธ์ ๋ฐ๊พธ์ง ์๊ณ ์๊ธฐ ํ๋ ์์ ์ด๋ฆ์ ๊ฐ๋ฆฝ๋๋ค.
- ์์ง์ ์ด๊ธฐ์์ ๊ณ์ฐํ๊ณ ํ์ฌ ๋ฒ์์ ์ ์ฅ ๊ณต๊ฐ์ ์ ์ํ ๋ค ํ์์ ๋ณํํฉ๋๋ค. ์ดํ ๋์ ๋ ์ค๋ฅธ์ชฝ๋ถํฐ ๊ณ์ฐํฉ๋๋ค. ์์ ๋ ๋ก์ปฌ ๊ณ์ฐ์ด๋ฉฐ ๋ณ์๋ฅผ ํ๋กํ์ด๋ JSON ํ์ผ์ ์๋ ์ ์ฅํ์ง ์์ต๋๋ค.
์์
1. ์ ์ ๊ฐฑ์
# count๋ 0์์ ์์ํด 5๋ฅผ ๋ฐ๊ณ LET๋ก 2๋ฅผ ๋ํฉ๋๋ค. Main์ Integer 7์ ๋ฐํํฉ๋๋ค. ์ฒซ DIM์ ์ด๋ฆ์ ์ ์ธํ๊ณ ์ดํ ๋์
์ ๊ฐ์ ๊ฐฑ์ ํฉ๋๋ค.
Option Explicit On
SUB Main()
DIM count AS Integer
count = 5
LET count = count + 2
RETURN count
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
count๋ 0์์ ์์ํด 5๋ฅผ ๋ฐ๊ณ LET๋ก 2๋ฅผ ๋ํฉ๋๋ค. Main์ Integer 7์ ๋ฐํํฉ๋๋ค. ์ฒซ DIM์ ์ด๋ฆ์ ์ ์ธํ๊ณ ์ดํ ๋์ ์ ๊ฐ์ ๊ฐฑ์ ํฉ๋๋ค.
2. ํ ์คํธ์ ๋ ผ๋ฆฌ ํ๋๊ทธ
# label์ ๋น String์ผ๋ก ์์ํฉ๋๋ค. SET๊ฐ "ore"๋ฅผ ์ ์ฅํฉ๋๋ค. enabled๋ Boolean TRUE์ด๋ฏ๋ก IF ๋ถ๊ธฐ๋ String "ore"๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ์ดํ ์๋ TRUE๋ ๋
ผ๋ฆฌ๊ฐ 1์
๋๋ค.
Option Explicit On
SUB Main()
DIM label AS String
VAR enabled AS Boolean = TRUE
SET label = "ore"
IF enabled = TRUE THEN
RETURN label
END IF
RETURN "disabled"
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
label์ ๋น String์ผ๋ก ์์ํฉ๋๋ค. SET๊ฐ "ore"๋ฅผ ์ ์ฅํฉ๋๋ค. enabled๋ Boolean TRUE์ด๋ฏ๋ก IF ๋ถ๊ธฐ๋ String "ore"๋ฅผ ๋ฐํํฉ๋๋ค. ๋ฐ์ดํ ์๋ TRUE๋ ๋ ผ๋ฆฌ๊ฐ 1์ ๋๋ค.
3. ์ ์ญ ์ ๋ ฅ๊ณผ ์ง์ญ ๊ณ์ฐ
# baseAmount๋ ๊ฐ์ด 4์ธ ์ ์ญ ๋ณ์์
๋๋ค. extra๋ Calculate์ ์ง์ญ ๋ณ์์ด๋ฉฐ ๊ฐ์ 3์
๋๋ค. Calculate๊ฐ ๋ฐํํ 7์ Main์ ์์ฒด ์ง์ญ result์ ์ ์ฅํ๊ณ 7์ ๋ฐํํฉ๋๋ค. extra๋ Main์ ์ง์ญ ๋ณ์๊ฐ ์๋๋๋ค.
Option Explicit On
VAR baseAmount AS Integer = 4
FUNCTION Calculate()
VAR extra = 3
RETURN baseAmount + extra
END FUNCTION
SUB Main()
VAR result = Calculate()
RETURN result
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
baseAmount๋ ๊ฐ์ด 4์ธ ์ ์ญ ๋ณ์์ ๋๋ค. extra๋ Calculate์ ์ง์ญ ๋ณ์์ด๋ฉฐ ๊ฐ์ 3์ ๋๋ค. Calculate๊ฐ ๋ฐํํ 7์ Main์ ์์ฒด ์ง์ญ result์ ์ ์ฅํ๊ณ 7์ ๋ฐํํฉ๋๋ค. extra๋ Main์ ์ง์ญ ๋ณ์๊ฐ ์๋๋๋ค.