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

List

ClassicUO โ€ข Basic

List()๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๊ณ  ๊ธธ์ด๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋Š” ์ปฌ๋ ‰์…˜์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋ฐ˜ํ™˜ ๊ฐ์ฒด๋ฅผ ๋ณ€์ˆ˜์— ์ €์žฅํ•˜์„ธ์š”. items.Add๋Š” ๊ฐ์ฒด ๋ฉ”์„œ๋“œ์ด๋ฉฐ ์ „์—ญ List.Add ๋ช…๋ น์€ ์—†์Šต๋‹ˆ๋‹ค.

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

List() -> Object:List
List(source:Array/List) -> Object:List
items.Add(value:Any) -> Unit
items.Insert(index:Number, value:Any) -> Unit
items.Item(index:Number) -> Any
items[index] = value
items.Set(index:Number, value:Any) -> Unit
items.Count() -> Integer
items.Contains(value:Any) -> Integer:1/0
items.IndexOf(value:Any) -> Integer:index/-1
items.Remove(value:Any) -> Integer:1/0
items.RemoveAt(index:Number) -> Unit
items.Clear() -> Unit
items.ToArray() -> Array

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

  • 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:List๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Item/์ธ๋ฑ์Šค๋Š” ์ €์žฅ๊ฐ’, Count๋Š” ์š”์†Œ ์ˆ˜, IndexOf๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์œ„์น˜ ๋˜๋Š” -1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Contains/Remove๋Š” 1=TRUE ๋˜๋Š” 0=FALSE, Add/Insert/Set/RemoveAt/Clear๋Š” Unit, ToArray๋Š” ์ƒˆ Array๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋™์ž‘

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

์˜ˆ์ œ

1. ๋ชฉ๋ก ์ƒ์„ฑ๊ณผ ํ•ฉ๊ณ„

# Add๋กœ [3,7], Insert(1,5)๋กœ [3,5,7], Set(0,2)๋กœ [2,5,7]์ด ๋ฉ๋‹ˆ๋‹ค. For Each๊ฐ€ ์„ธ ๊ฐ’์„ ๋”ํ•ฉ๋‹ˆ๋‹ค. Main์€ Integer 14๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Var items = List()
    items.Add(3)
    items.Add(7)
    items.Insert(1, 5)
    items.Set(0, 2)
    Var total = 0
    For Each item In items
        total += item
    Next
    Return total
End Sub

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

Add๋กœ [3,7], Insert(1,5)๋กœ [3,5,7], Set(0,2)๋กœ [2,5,7]์ด ๋ฉ๋‹ˆ๋‹ค. For Each๊ฐ€ ์„ธ ๊ฐ’์„ ๋”ํ•ฉ๋‹ˆ๋‹ค. Main์€ Integer 14๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2. ๋…๋ฆฝ ๋ณต์‚ฌ์™€ ์Šค๋ƒ…์ƒท

# seed=[4,6]์ž…๋‹ˆ๋‹ค. copied์™€ snapshot์€ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ์€ [9,6]์ด ๋˜๊ณ  Remove(6)๋Š” TRUE=1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. RemoveAt(0)์œผ๋กœ ๋น„์›Œ์ง€๊ณ  Clear ํ›„์—๋„ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Main์€ 4*100+6*10+1+0, Integer 461์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Sub Main()
    Dim seed[1]
    seed[0] = 4
    seed[1] = 6
    Var items = List(seed)
    Var copied = List(items)
    Var snapshot = items.ToArray()
    items[0] = 9
    Var removed = items.Remove(6)
    items.RemoveAt(0)
    items.Clear()
    Return snapshot[0]*100 + copied[1]*10 + removed + items.Count()
End Sub

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

seed=[4,6]์ž…๋‹ˆ๋‹ค. copied์™€ snapshot์€ ๊ฐ’์„ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์›๋ณธ์€ [9,6]์ด ๋˜๊ณ  Remove(6)๋Š” TRUE=1์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. RemoveAt(0)์œผ๋กœ ๋น„์›Œ์ง€๊ณ  Clear ํ›„์—๋„ ๋น„์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Main์€ 4100+610+1+0, Integer 461์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3. ๊ฒ€์ƒ‰๊ณผ ByRef ์ˆ˜์ •

# NextIndex๋Š” ํ•œ ๋ฒˆ ์‹คํ–‰๋˜์–ด calls=1, ์ธ๋ฑ์Šค 0์ž…๋‹ˆ๋‹ค. Bump๊ฐ€ 5๋ฅผ 6์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. Contains(6)=TRUE, IndexOf(6)=0, Item(0)์€ 6์ž…๋‹ˆ๋‹ค. Main์€ Integer 601์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function NextIndex(ByRef calls)
    calls += 1
    Return 0
End Function
Sub Bump(ByRef value)
    value += 1
End Sub
Sub Main()
    Var items = List()
    items.Add(5)
    Var calls = 0
    Bump(items[NextIndex(calls)])
    If items.Contains(6) AndAlso items.IndexOf(6) = 0 Then
        Return items.Item(0)*100 + calls
    End If
    Return -1
End Sub

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

NextIndex๋Š” ํ•œ ๋ฒˆ ์‹คํ–‰๋˜์–ด calls=1, ์ธ๋ฑ์Šค 0์ž…๋‹ˆ๋‹ค. Bump๊ฐ€ 5๋ฅผ 6์œผ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. Contains(6)=TRUE, IndexOf(6)=0, Item(0)์€ 6์ž…๋‹ˆ๋‹ค. Main์€ Integer 601์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


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

Basic