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์˜ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.


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

Basic