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

Enum / End Enum

ClassicUO โ€ข Basic

Enum์€ ์Šคํฌ๋ฆฝํŠธ ์ƒํƒœ์™€ ๋ชจ๋“œ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ด๋ฆ„ ์žˆ๋Š” Integer ์ƒ์ˆ˜๋ฅผ ๋ฌถ์Šต๋‹ˆ๋‹ค. ํŒŒ์ผ์ด๋‚˜ Module ์ˆ˜์ค€์— ์„ ์–ธํ•˜๋ฉฐ Sub/Function ๋‚ด๋ถ€์—๋Š” ์„ ์–ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. VB.NET ์—ด๊ฑฐํ˜•์˜ ์ผ๋ถ€๋ฅผ ์ง€์›ํ•˜๋ฉฐ .NET Enum ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

[Public | Private] Enum name [As Integer]
    member [= constantExpression]
    ...
End Enum
Dim state As name = name.member
ModuleName.name.member

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

  • Public / Private โ€” ๊ธฐ๋ณธ์€ Public์ด๋ฉฐ Module ๋‚ด๋ถ€๋„ ๊ฐ™์Šต๋‹ˆ๋‹ค. Private์€ Module ๋‚ด๋ถ€์—์„œ๋งŒ ํ—ˆ์šฉ๋˜๊ณ  ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ ํŒŒ์ผ ๋ฒ”์œ„์—์„œ ํ˜•์‹ ๋ฐ ๋ฉค๋ฒ„๋ฅผ ์ˆจ๊น๋‹ˆ๋‹ค.
  • name โ€” Mode์ฒ˜๋Ÿผ ์  ์—†๋Š” ๋‹จ์ˆœ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. UO์™€ ๋‚ด์žฅ ํ˜•์‹ ์ด๋ฆ„์€ ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ „์ฒด ์ด๋ฆ„์€ Enum, Module, ์ „์—ญ ๋ณ€์ˆ˜์™€ ์ค‘๋ณต๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • As Integer โ€” ์„ ํƒ ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ฐ˜ ํ˜•์‹์€ ๋ถ€ํ˜ธ ์žˆ๋Š” 32๋น„ํŠธ Integer, -2147483648..2147483647๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ˜•์‹์€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, Function ๋ฐ˜ํ™˜ํ˜•์˜ As Mode๋Š” ์ผ๋ฐ˜ Integer ์ €์žฅ ๋ฐ ๋ณ€ํ™˜์„ ์‚ฌ์šฉํ•˜๋ฉฐ ๋‚˜์—ด๋œ ๋ฉค๋ฒ„ ๊ฐ’์œผ๋กœ ์ œํ•œํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์œผ๋ฉด 0์ž…๋‹ˆ๋‹ค.
  • member โ€” ํ•œ ์ค„์— ๋‹จ์ˆœ ๋ฉค๋ฒ„ ์ด๋ฆ„ ํ•˜๋‚˜, ์ตœ์†Œ ํ•œ ๋ฉค๋ฒ„๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ค‘๋ณต ์ด๋ฆ„, True, False๋Š” ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค. ์‹์ด ์—†์œผ๋ฉด ์ฒซ ๊ฐ’์€ 0, ์ดํ›„ ๊ฐ’์€ ์ด์ „ ๊ฐ’์— 1์„ ๋”ํ•ฉ๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ์ด๋ฆ„์ด ๊ฐ™์€ ๊ฐ’์„ ๊ฐ€์ ธ๋„ ๋ฉ๋‹ˆ๋‹ค.
  • constantExpression โ€” ์„ ํƒ์  ์ƒ์ˆ˜ ์‹: 10์ง„/0x ์ •์ˆ˜, ๊ด„ํ˜ธ, ๋‹จํ•ญ ์Œ์ˆ˜, + - * / Mod, ์ด์ „ ๋ฉค๋ฒ„์™€ ์ด๋ฏธ ์„ ์–ธ๋œ ์ˆซ์ž Const. ์ตœ์ข… ๊ฐ’์€ ๋ฒ”์œ„ ๋‚ด ์ •์ˆ˜์—ฌ์•ผ ํ•˜๋ฉฐ ์ค‘๊ฐ„ ๋‚˜๋ˆ—์…ˆ์—๋Š” ์†Œ์ˆ˜๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฐธ์กฐ Const๋„ Integer ๊ฒฐ๊ณผ์—ฌ์•ผ ํ•˜๋ฉฐ ํ˜•์‹ ์—†์Œ ๋˜๋Š” As Integer/Long/Short/Byte๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•จ์ˆ˜ ํ˜ธ์ถœ, ๋ณ€์ˆ˜, ๋ฌธ์ž์—ด, ๋น„๊ต, ๋ฐฐ์—ด ์ฝ๊ธฐ๋Š” ๊ธˆ์ง€๋ฉ๋‹ˆ๋‹ค. ์ดํ›„ ๋ฉค๋ฒ„ ์ฐธ์กฐ, ์ˆœํ™˜ ์˜์กด์„ฑ, 128๋‹จ๊ณ„ ์ดˆ๊ณผ ์˜์กด์„ฑ์€ ๊ฑฐ๋ถ€๋ฉ๋‹ˆ๋‹ค.
  • name.member โ€” Mode.Ready๋กœ ์ฝ๊ณ  ๋ชจ๋“ˆ ์™ธ๋ถ€์—์„œ๋Š” Tools.Mode.Ready๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Tools ์•ˆ์—์„œ๋Š” Mode.Ready, With Mode ์•ˆ์—์„œ๋Š” .Ready๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์ž…, +=, ByRef ๋˜์“ฐ๊ธฐ๋กœ ์ƒ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Enum ํ˜•์‹์€ ํ•จ์ˆ˜์ฒ˜๋Ÿผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

์„ ์–ธ ์ž์ฒด๋Š” ๋ฐ˜ํ™˜๊ฐ’๊ณผ ํ˜ธ์ถœ ๊ด„ํ˜ธ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฉค๋ฒ„๋ฅผ ์ฝ์œผ๋ฉด Integer, ์˜ˆ๋ฅผ ๋“ค์–ด Mode.Working = 3์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒํƒœ๊ฐ’์ด์ง€ ์ž๋™ ์„ฑ๊ณต ํ‘œ์‹œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. state = Mode.Finished๋ผ๋Š” Boolean ๋น„๊ต๋Š” 1/True ๋˜๋Š” 0/False๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋‘ ํ‘œ๊ธฐ ๋ชจ๋‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํƒœ 0์€ ์‹คํŒจ๊ฐ€ ์•„๋‹ˆ๋ผ Idle์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ค€๋น„ ๋‹จ๊ณ„์—์„œ EnumCatalog๊ฐ€ ์Šคํฌ๋ฆฝํŠธ/API๋ฅผ ์‹คํ–‰ํ•˜์ง€ ์•Š๊ณ  ์ด์ „ ์ˆซ์ž ์ƒ์ˆ˜์™€ ์ž๋™ ๋ฒˆํ˜ธ๋ฅผ ๊ณ„์‚ฐํ•˜๋ฉฐ ์ด๋ฆ„, ์ ‘๊ทผ, ๋ฒ”์œ„๋ฅผ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. SC026์€ Option Explicit์ด ์—†์–ด๋„ ์‹œ์ž‘์„ ์ฐจ๋‹จํ•ฉ๋‹ˆ๋‹ค. ๊ตฌ๋ฌธ ์˜ค๋ฅ˜๋„ ์‹คํ–‰์„ ์ฐจ๋‹จํ•˜๊ณ  ํŽธ์ง‘ ์ค‘ ๋ฏธ์™„์„ฑ ์„ ์–ธ์€ ์ง„๋‹จ์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค.
  • DefinitionCollector๋Š” ์ „์—ญ ์ดˆ๊ธฐํ™” ๋ฐ Optional ๊ธฐ๋ณธ๊ฐ’๋ณด๋‹ค ๋จผ์ € ๋ถˆ๋ณ€ ๋ฉค๋ฒ„๋ฅผ ๋“ฑ๋กํ•˜๋ฏ€๋กœ ํ•ด๋‹น ์œ„์น˜๋Š” ํŒŒ์ผ ๋’ค์ชฝ์˜ Enum๋„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Enum ๋‚ด๋ถ€ ์‹์€ ์—ฌ์ „ํžˆ ์ด์ „ ์ƒ์ˆ˜๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ค€๋น„๋œ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ณ ์ • ๋ชฉ๋ก์„ ๋ณด๊ด€ํ•˜๊ณ  ๋‹ค๋ฅธ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋กœ๋“œํ•˜๋ฉด ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.
  • ScriptBindings๋Š” ๋ชจ๋“ˆ ์ƒ๋Œ€ ์ด๋ฆ„๊ณผ Private์„ ํ•œ ๋ฒˆ ํ•ด์„ํ•ฉ๋‹ˆ๋‹ค. ์‹คํ–‰์€ ์ผ๋ฐ˜ ์ƒ์ˆ˜๋ฅผ ์ฝ์œผ๋ฉฐ ๋ฐ˜๋ณต๋ฌธ์—์„œ ์žฌ๊ณ„์‚ฐํ•˜๊ฑฐ๋‚˜ ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. As Mode๋Š” Integer๋กœ ์ •๊ทœํ™”๋˜์–ด ๋””๋ฒ„๊ฑฐ์— Integer๋กœ ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Include์—์„œ ์„ ์–ธ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Flags ํŠน์„ฑ, System.Enum ๋ฉ”์„œ๋“œ, ์•”์‹œ์  ๋ฉค๋ฒ„ ๊ฐ€์ ธ์˜ค๊ธฐ, ์ž๋™ ๋ฉค๋ฒ„ ๋ชฉ๋ก์€ ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ์ƒํƒœ์— ์ด๋ฆ„ ์ง€์ •

# Idle=0๊ณผ Queued=1์€ ์ž๋™์ž…๋‹ˆ๋‹ค. Working=10์œผ๋กœ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฏ€๋กœ Finished=11์ž…๋‹ˆ๋‹ค. state As TaskState๋Š” 10์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. Main์€ CStr๋กœ ์ˆซ์ž๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ String "0:1:10:11"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์ž์‹ ์˜ ์ƒํƒœ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ณ  ์„ ์–ธ ์ž์ฒด๋Š” ์ ˆ์ฐจ๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Option Explicit On
Enum TaskState As Integer
    Idle
    Queued
    Working = 10
    Finished
End Enum

Sub Main()
    Dim state As TaskState = TaskState.Working
    Return CStr(TaskState.Idle) & ":" & CStr(TaskState.Queued) & ":" & CStr(state) & ":" & CStr(TaskState.Finished)
End Sub

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

Idle=0๊ณผ Queued=1์€ ์ž๋™์ž…๋‹ˆ๋‹ค. Working=10์œผ๋กœ ์ˆœ์„œ๊ฐ€ ๋ฐ”๋€Œ๋ฏ€๋กœ Finished=11์ž…๋‹ˆ๋‹ค. state As TaskState๋Š” 10์„ ๋ฐ›์Šต๋‹ˆ๋‹ค. Main์€ CStr๋กœ ์ˆซ์ž๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ String "0:1:10:11"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ์ž์‹ ์˜ ์ƒํƒœ๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๊ณ  ์„ ์–ธ ์ž์ฒด๋Š” ์ ˆ์ฐจ๋ฅผ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2. ๋ชจ๋“ˆ ์ƒํƒœ ์ˆจ๊ธฐ๊ธฐ

# Controller.Mode๋Š” Controller ๋‚ด๋ถ€ ์ „์šฉ์ž…๋‹ˆ๋‹ค. NextMode๋Š” distance ByVal As Integer๋ฅผ ๋ฐ›์•„ ํ˜ธ์ถœ์ž ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. distance<=1์ด๋ฉด Arrived=5, ์•„๋‹ˆ๋ฉด Walking=4์ด๋ฉฐ state๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Main์€ 3๊ณผ 1์„ ์ „๋‹ฌํ•ด 4์™€ 5๋ฅผ ๋ฐ›๊ณ  Integer 45๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ ์ด๋™์€ ์—†๊ณ  distance๋Š” ์˜ˆ์ œ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค. ์™ธ๋ถ€์—์„œ๋Š” Controller.NextMode๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Controller.Mode.Arrived๋Š” ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
Option Explicit On
Module Controller
    Private Enum Mode
        Idle
        Walking = 4
        Arrived
    End Enum

    Public Function NextMode(ByVal distance As Integer) As Integer
        Dim state As Mode
        If distance <= 1 Then
            state = Mode.Arrived
        Else
            state = Mode.Walking
        End If
        Return state
    End Function
End Module

Sub Main()
    Dim farState = Controller.NextMode(3)
    Dim nearState = Controller.NextMode(1)
    Return farState * 10 + nearState
End Sub

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

Controller.Mode๋Š” Controller ๋‚ด๋ถ€ ์ „์šฉ์ž…๋‹ˆ๋‹ค. NextMode๋Š” distance ByVal As Integer๋ฅผ ๋ฐ›์•„ ํ˜ธ์ถœ์ž ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. distance<=1์ด๋ฉด Arrived=5, ์•„๋‹ˆ๋ฉด Walking=4์ด๋ฉฐ state๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Main์€ 3๊ณผ 1์„ ์ „๋‹ฌํ•ด 4์™€ 5๋ฅผ ๋ฐ›๊ณ  Integer 45๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์บ๋ฆญํ„ฐ ์ด๋™์€ ์—†๊ณ  distance๋Š” ์˜ˆ์ œ ์ž…๋ ฅ์ž…๋‹ˆ๋‹ค. ์™ธ๋ถ€์—์„œ๋Š” Controller.NextMode๋งŒ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ Controller.Mode.Arrived๋Š” ์ฝ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

3. ์ƒํƒœ ๋ณ€๊ฒฝ ํ›„ Boolean ๋ฐ˜ํ™˜

# ์ด์ „ Integer Const์ธ FirstState=2๋กœ Idle=2, Working=3, Finished=4๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. Advance๋Š” state๋ฅผ ByRef๋กœ ๋ฐ›์•„ Main์˜ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. With Mode๋Š” ์ด๋ฆ„์„ ์ค„์ด๊ณ  Select Case๋Š” ์ „ํ™˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด 2โ†’3โ†’4์ž…๋‹ˆ๋‹ค. IsFinal์€ ByVal ๋ณต์‚ฌ๋ณธ์„ Finished์™€ ๋น„๊ตํ•˜๋ฏ€๋กœ Main์€ 1/True๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ์ „ํ™˜ํ–ˆ๋‹ค๋ฉด 0/False์ž…๋‹ˆ๋‹ค. Advance๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋ฉด "No next state" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ Mode ์ƒ์ˆ˜๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Option Explicit On
Const FirstState As Integer = 2
Enum Mode
    Idle = FirstState
    Working = Idle + 1
    Finished
End Enum

Sub Advance(ByRef state As Mode)
    With Mode
        Select Case state
            Case .Idle
                state = .Working
            Case .Working
                state = .Finished
            Case Else
                Throw "No next state"
        End Select
    End With
End Sub

Function IsFinal(ByVal state As Mode) As Boolean
    Return state = Mode.Finished
End Function

Sub Main()
    Dim state As Mode = Mode.Idle
    Advance(state)
    Advance(state)
    Return IsFinal(state)
End Sub

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

์ด์ „ Integer Const์ธ FirstState=2๋กœ Idle=2, Working=3, Finished=4๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. Advance๋Š” state๋ฅผ ByRef๋กœ ๋ฐ›์•„ Main์˜ ๋ณ€์ˆ˜๋ฅผ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. With Mode๋Š” ์ด๋ฆ„์„ ์ค„์ด๊ณ  Select Case๋Š” ์ „ํ™˜์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด 2โ†’3โ†’4์ž…๋‹ˆ๋‹ค. IsFinal์€ ByVal ๋ณต์‚ฌ๋ณธ์„ Finished์™€ ๋น„๊ตํ•˜๋ฏ€๋กœ Main์€ 1/True๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ•œ ๋ฒˆ ์ „ํ™˜ํ–ˆ๋‹ค๋ฉด 0/False์ž…๋‹ˆ๋‹ค. Advance๋ฅผ ๋‹ค์‹œ ํ˜ธ์ถœํ•˜๋ฉด "No next state" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉฐ Mode ์ƒ์ˆ˜๋Š” ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.


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

Basic