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

Dictionary

ClassicUO โ€ข Basic

Dictionary()๋Š” ํ‚ค โ†’ ๊ฐ’ ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž ํ‚ค์™€ ๋ฌธ์ž์—ด ํ‚ค, "ore"์™€ "Ore"๋Š” ์„œ๋กœ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

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

Dictionary() -> Object:Dictionary
Dictionary(source:Dictionary) -> Object:Dictionary
values.Add(key:String/Number, value:Any) -> Unit
values.Item(key:String/Number) -> Any
values[key] = value
values.Set(key:String/Number, value:Any) -> Unit
values.Get(key:String/Number, fallback:Any) -> Any
values.Count() -> Integer
values.ContainsKey(key:String/Number) -> Integer:1/0
values.Remove(key:String/Number) -> Integer:1/0
values.Clear() -> Unit
values.Keys() -> Array
values.Values() -> Array
entry.Key() -> String/Number
entry.Value() -> Any

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

  • source โ€” source: ์ƒ๋žตํ•˜๋ฉด ๋นˆ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค. List๋Š” ๋ฐฐ์—ด ๋˜๋Š” List, Dictionary๋Š” Dictionary๋ฅผ ๋ฐ›์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋งŒ ๋ณต์‚ฌํ•˜๊ณ  ์ค‘์ฒฉ ์ฐธ์กฐ๋Š” ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.
  • index / key โ€” index / key: List ์œ„์น˜๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ •์ˆ˜ ์ˆซ์ž์ด๋ฉฐ Insert๋Š” Count()๋„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. Dictionary ํ‚ค๋Š” ํ…์ŠคํŠธ ๋˜๋Š” ์œ ํ•œ ์ˆซ์ž์ž…๋‹ˆ๋‹ค. ์ˆซ์ž 1๊ณผ 1.0์€ ๊ฐ™์€ ํ‚ค์ด๊ณ  ํ…์ŠคํŠธ "1"์€ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.
  • value โ€” value: ์ดˆ๊ธฐํ™”๋œ Basic ๊ฐ’์œผ๋กœ ๋ฐฐ์—ด์ด๋‚˜ ์ปฌ๋ ‰์…˜๋„ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. Unit์€ ์ €์žฅํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ˆซ์ž ๊ฐ’, ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ๋ฌธ์ž์—ด ๋˜๋Š” ๋ฐฐ์—ด/๊ฐ์ฒด ์ฐธ์กฐ ๋™์ผ์„ฑ์œผ๋กœ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
  • fallback โ€” fallback: ํ‚ค๊ฐ€ ์—†์œผ๋ฉด Get์ด ์ด ๋Œ€์ฒด๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‚ฝ์ž…ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. fallback ์‹์„ ํฌํ•จํ•œ ๋ชจ๋“  ์ธ์ˆ˜๋Š” ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ ์ „์— ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

์ƒ์„ฑ์ž๋Š” Object:Dictionary๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Item/์ธ๋ฑ์Šค/Get์€ ๊ฐ’, Count๋Š” ํ‚ค ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ContainsKey/Remove๋Š” 1=TRUE ๋˜๋Š” 0=FALSE, Add/Set/Clear๋Š” Unit, Keys/Values๋Š” ์ƒˆ Array๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. For Each๋Š” ํ•ญ๋ชฉ ๊ฐ์ฒด๋ฅผ ๋‚ด๋ณด๋‚ด๋ฉฐ Key()๋Š” ํ‚ค, Value()๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • Add๋Š” ๊ธฐ์กด ํ‚ค๋ฅผ ๋ฎ์–ด์“ฐ์ง€ ์•Š๊ณ  ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. Set/์ธ๋ฑ์Šค ๋Œ€์ž…์€ ์ƒ์„ฑ ๋˜๋Š” ๊ต์ฒดํ•˜๋ฉฐ Item/์ธ๋ฑ์Šค ์ฝ๊ธฐ์—๋Š” ๊ธฐ์กด ํ‚ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Get์€ ๋Œ€์ฒด๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Remove๋Š” ํ‚ค๊ฐ€ ์—†์œผ๋ฉด 0์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  Clear๋Š” ๋น„์›๋‹ˆ๋‹ค.
  • NaN, ๋ฌดํ•œ๋Œ€, ๋ฐฐ์—ด, ๊ฐ์ฒด, Unit์€ ํ‚ค๊ฐ€ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ‚ค ์ˆœ์„œ๋Š” ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ ํ•ญ๋ชฉ์€ ์ž์‹ ์˜ ํ‚ค/๊ฐ’ ์Œ์„ ์œ ์ง€ํ•˜๋ฉฐ ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ€๋„ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Keys/Values๋Š” ์–•์€ ์Šค๋ƒ…์ƒท์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์‚ญ์ œ/๊ต์ฒดํ•˜๋ ค๋ฉด Keys()๋ฅผ ์ˆœํšŒํ•˜์„ธ์š”. ์‚ฌ์ „์„ ์ง์ ‘ ์ˆœํšŒํ•˜๋ฉด ํ•ญ๋ชฉ ๊ฐ์ฒด๋ฅผ ์–ป์Šต๋‹ˆ๋‹ค.
  • ์ง์ ‘ For Each๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋™์•ˆ Set์„ ํฌํ•จํ•œ ๋ณ€๊ฒฝ์„ ํ•˜๋ฉด ๋‹ค์Œ ๋‹จ๊ณ„์—์„œ ์žก์„ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. Try/Finally๋Š” ์ •์ƒ์ ์œผ๋กœ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค. ์‹คํŒจํ•œ ์ˆ˜์ •์€ ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค.
  • ๋ณ„์นญ๊ณผ ByVal ์ธ์ˆ˜๋Š” ์ปฌ๋ ‰์…˜์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์‚ฌ์™€ ์Šค๋ƒ…์ƒท์€ ์™ธ๋ถ€ ์ปจํ…Œ์ด๋„ˆ๋งŒ ๋ณต์ œํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ByRef์™€ ๋ณตํ•ฉ ๋Œ€์ž…์€ ์ปจํ…Œ์ด๋„ˆ/ํ‚ค๋ฅผ ํ•œ ๋ฒˆ ๊ณ„์‚ฐํ•˜๋ฉฐ ๋ณ€์ˆ˜ ๊ต์ฒด๊ฐ€ ์ €์žฅ๋œ ๊ธฐ๋ก ์œ„์น˜๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ๋กœ์ปฌ ์Šคํฌ๋ฆฝํŠธ ๋ฐ์ดํ„ฐ์ž…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ๊ฒŒ์ž„ ์•„์ดํ…œ์„ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์š”์†Œ๋กœ ์ €์žฅ๋œ ์•„์ดํ…œ ๋ฌถ์Œ์€ ํ•œ ์œ„์น˜๋ฅผ ์ฐจ์ง€ํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ํ‚ค ํ˜•์‹๊ณผ ๋Œ€์ฒด๊ฐ’

# "ore"๋Š” 5์—์„œ 8๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ์ˆซ์ž ํ‚ค 1์€ 2, ํ…์ŠคํŠธ "1"์€ 3์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. Get("wood",7)์€ ์‚ฝ์ž…ํ•˜์ง€ ์•Š๊ณ  7์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ 8*100+2*10+3+7, Integer 830์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var values = Dictionary()
    values.Add("ore", 5)
    values.Set("ore", 8)
    values[1] = 2
    values["1"] = 3
    Return values.Item("ore")*100 + values[1]*10 + values["1"] + values.Get("wood", 7)
End Sub

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

"ore"๋Š” 5์—์„œ 8๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค. ์ˆซ์ž ํ‚ค 1์€ 2, ํ…์ŠคํŠธ "1"์€ 3์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. Get("wood",7)์€ ์‚ฝ์ž…ํ•˜์ง€ ์•Š๊ณ  7์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ 8100+210+3+7, Integer 830์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2. ํ•ญ๋ชฉ, ์Šค๋ƒ…์ƒท, ์‚ญ์ œ

# ๋‘ ๊ฐ’์˜ ํ•ฉ์€ 5์ž…๋‹ˆ๋‹ค. Keys()๋กœ ์ˆœํšŒ ์ค‘ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. copied๋Š” ore=2, snapshot์€ ๋‘ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Clear ํ›„ Count()=0์ž…๋‹ˆ๋‹ค. Main์€ 5*100+2*10+2+0, Integer 522๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var values = Dictionary()
    values.Add("ore", 2)
    values.Add("wood", 3)
    Var copied = Dictionary(values)
    Var snapshot = values.Values()
    Var total = 0
    For Each entry In values
        If values.ContainsKey(entry.Key()) Then
            total += entry.Value()
        End If
    Next
    For Each key In values.Keys()
        values.Remove(key)
    Next
    values.Clear()
    Return total*100 + copied["ore"]*10 + GetArrayLength(snapshot) + values.Count()
End Sub

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

๋‘ ๊ฐ’์˜ ํ•ฉ์€ 5์ž…๋‹ˆ๋‹ค. Keys()๋กœ ์ˆœํšŒ ์ค‘ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. copied๋Š” ore=2, snapshot์€ ๋‘ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Clear ํ›„ Count()=0์ž…๋‹ˆ๋‹ค. Main์€ 5100+210+2+0, Integer 522๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3. ์ค‘๋ณต ํ‚ค ์ฒ˜๋ฆฌ

# ์ฒซ Add๊ฐ€ ore=4๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ฐ’ 7์€ ์˜ค๋ฅ˜๊ฐ€ ๋˜์–ด Catch๊ฐ€ caught=1์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ore=4๋Š” ๋ณด์กด๋ฉ๋‹ˆ๋‹ค. Main์€ 4*10+1, Integer 41์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var values = Dictionary()
    values.Add("ore", 4)
    Var caught = 0
    Try
        values.Add("ore", 7)
    Catch problem
        caught = 1
    End Try
    Return values["ore"]*10 + caught
End Sub

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

์ฒซ Add๊ฐ€ ore=4๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๊ฐ’ 7์€ ์˜ค๋ฅ˜๊ฐ€ ๋˜์–ด Catch๊ฐ€ caught=1์„ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ore=4๋Š” ๋ณด์กด๋ฉ๋‹ˆ๋‹ค. Main์€ 4*10+1, Integer 41์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


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

Basic