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

Module / End Module

ClassicUO โ€ข Basic

Module์€ ํ•จ์ˆ˜, ํ”„๋กœ์‹œ์ €, VAR/DIM, CONST๋ฅผ ํ•˜๋‚˜์˜ ์ด๋ฆ„์œผ๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค. ์™ธ๋ถ€์—์„œ๋Š” Tools.Sum ๋˜๋Š” Counter.count๋ฅผ ์“ฐ๋ฉฐ, ํ˜„์žฌ ๋ชจ๋“ˆ ์•ˆ์—์„œ๋Š” ์งง์€ ๋ฉค๋ฒ„ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

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

Module moduleName
    members
End Module
moduleName.member(arguments)
moduleName.field

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

  • moduleName โ€” moduleName: Tools์™€ ๊ฐ™์€ ๋‹จ์ˆœ ์‹๋ณ„์ž์ด๋ฉฐ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. UO๋Š” ์˜ˆ์•ฝ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ค‘๋ณต ์ด๋ฆ„๊ณผ ์ค‘์ฒฉ Module์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • members โ€” members: SUB/FUNCTION, ์Šค์นผ๋ผ VAR/DIM, CONST, Include์™€ ์œ ํšจํ•œ Option Explicit์ž…๋‹ˆ๋‹ค. ํ•„๋“œ์— ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“ˆ ๋ฐ”๋กœ ์•„๋ž˜์˜ DIM[...]์€ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ํ•จ์ˆ˜๋กœ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด VAR์— ์ €์žฅํ•˜์„ธ์š”.
  • member / arguments โ€” member / arguments: ๋ฉค๋ฒ„ ์ด๋ฆ„๊ณผ ํ•จ์ˆ˜ ์ธ์ˆ˜์ž…๋‹ˆ๋‹ค. Tools.Sum(2, 3)์€ left=2, right=3์„ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. Counter.count ํ•„๋“œ์—๋Š” ๊ด„ํ˜ธ๊ฐ€ ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

Module ์ž์ฒด์—๋Š” ๋ฐ˜ํ™˜๊ฐ’์ด ์—†์œผ๋ฉฐ Module(...)์ฒ˜๋Ÿผ ํ˜ธ์ถœํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Tools.Sum(...)์€ ํ•จ์ˆ˜์˜ RETURN ๊ฐ’์„, ํ•„๋“œ๋Š” ์ €์žฅ๋œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋น„๊ต ๊ฒฐ๊ณผ๋Š” Integer 1/0์œผ๋กœ ์กฐ๊ฑด๊ณผ ๋น„๊ต์—์„œ TRUE/FALSE์— ๋Œ€์‘ํ•ฉ๋‹ˆ๋‹ค. ์ž„์˜์˜ ์ˆซ์ž, ID, ๊ฐœ์ˆ˜๊ฐ€ ๋ชจ๋‘ ๋ถˆ๋ฆฌ์–ธ ๊ฒฐ๊ณผ์ธ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • ํŒŒ์ผ ์ˆ˜์ค€์—์„œ Module์„ ์„ ์–ธํ•˜๊ณ  End Module๋กœ ๋‹ซ์Šต๋‹ˆ๋‹ค. Include๋กœ ๋ชจ๋“ˆ ์ „์ฒด๋‚˜ ๋ฉค๋ฒ„๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์˜ค๋ฅ˜์—๋Š” ์›๋ณธ ํŒŒ์ผ๊ณผ ์ค„์ด ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. Option Explicit๋Š” ์‹ค์ œ ํŒŒ์ผ ๋‹จ์œ„๋กœ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์ค€๋น„ ๋‹จ๊ณ„์—์„œ ์ „์ฒด ์ด๋ฆ„์„ ์ˆ˜์ง‘ํ•˜๊ณ  ์งง์€ ์ฐธ์กฐ๋ฅผ ํ˜„์žฌ ๋ชจ๋“ˆ์— ์—ฐ๊ฒฐํ•˜๋ฉฐ ์‹คํ–‰ ์ „์— ์ ‘๊ทผ์„ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์ ์ธ ์ง€์—ญ ๋งค๊ฐœ๋ณ€์ˆ˜, VAR, CONST, DIM์€ ๊ฐ™์€ ์ด๋ฆ„์˜ ํ•„๋“œ๋ฅผ ๊ฐ€๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ ์™ธ์—๋Š” ๋ชจ๋“ˆ ํ•„๋“œ, ๊ธฐ์กด ์ „์—ญ ๋ณ€์ˆ˜ ์ˆœ์„œ๋กœ ์ฐพ์Šต๋‹ˆ๋‹ค.
  • ๋…๋ฆฝ ์‹คํ–‰์„ ์‹œ์ž‘ํ•  ๋•Œ ์„ ์–ธ ์ˆœ์„œ๋Œ€๋กœ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™”ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ์‹คํ–‰์˜ ์ค‘์ฒฉ ํ˜ธ์ถœ์€ ํ•„๋“œ ๋ณ€๊ฒฝ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์‹คํ–‰์€ ๋‹ค์‹œ ์ดˆ๊ธฐํ™”ํ•˜๋ฉฐ ๋™์‹œ์— ์‹คํ–‰ํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ๋ผ๋ฆฌ๋Š” ์ƒํƒœ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋””์Šคํฌ ์ €์žฅ ๊ธฐ๋Šฅ์ด ์•„๋‹™๋‹ˆ๋‹ค.
  • ํ•จ์ˆ˜/ํ”„๋กœ์‹œ์ €์˜ ๊ธฐ๋ณธ ์ ‘๊ทผ์€ Public์ด๊ณ  ํ•„๋“œ/์ƒ์ˆ˜๋Š” Private์ž…๋‹ˆ๋‹ค. Private๋Š” Module ์•ˆ์—์„œ๋งŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. Public / Private๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • IDE๋Š” ์ „์ฒด ํ”„๋กœ์‹œ์ € ์ด๋ฆ„์„ ํ‘œ์‹œํ•ฉ๋‹ˆ๋‹ค. ํ•„์ˆ˜ ์ธ์ˆ˜๊ฐ€ ์—†๋Š” ๊ณต๊ฐœ ํ”„๋กœ์‹œ์ €๋Š” ๋ชฉ๋ก์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๊ณ  ๋น„๊ณต๊ฐœ ๋„์šฐ๋ฏธ๋Š” ๋‚ด๋ถ€์šฉ์œผ๋กœ ๋‚จ์Šต๋‹ˆ๋‹ค. ์™„์„ฑ, ์ •์˜ ์ด๋™, ๋ณ€์ˆ˜ ์กฐํšŒ๋Š” ํ˜„์žฌ ๋ชจ๋“ˆ ๋ฒ”์œ„๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ๋‹ค๋ฅธ ๋ชจ๋“ˆ์˜ ๊ฐ™์€ ์ด๋ฆ„

# Tools.Sum์€ left=2์™€ right=3์„ ๋”ํ•ด 5๋ฅผ, Other.Sum์€ ๊ณฑํ•ด 6์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ณ„ํ•˜๋ฉฐ Main์€ Integer 11์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Module Tools
    Public Function Sum(ByVal left, ByVal right)
        Return left + right
    End Function
End Module
Module Other
    Public Function Sum(ByVal left, ByVal right)
        Return left * right
    End Function
End Module
Sub Main()
    Return Tools.Sum(2, 3) + Other.Sum(2, 3)
End Sub

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

Tools.Sum์€ left=2์™€ right=3์„ ๋”ํ•ด 5๋ฅผ, Other.Sum์€ ๊ณฑํ•ด 6์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ „์ฒด ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ณ„ํ•˜๋ฉฐ Main์€ Integer 11์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2. ํ•œ ์‹คํ–‰์˜ ๊ณต์œ  ํ•„๋“œ

# count๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Increment๋งˆ๋‹ค ๊ฐ™์€ ํ•„๋“œ์— 1์„ ๋”ํ•˜๋ฏ€๋กœ ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด before=2์ž…๋‹ˆ๋‹ค. Counter.count=5 ๋ณ€๊ฒฝ์€ Read์—๋„ ๋ณด์ž…๋‹ˆ๋‹ค. Main์€ 2*10+5, Integer 25๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์‹คํ–‰์€ ๋‹ค์‹œ 0์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Module Counter
    Public Var count As Integer = 0
    Public Sub Increment()
        count += 1
    End Sub
    Public Function Read()
        Return count
    End Function
End Module
Sub Main()
    Counter.Increment()
    Counter.Increment()
    Var before = Counter.Read()
    Counter.count = 5
    Return before * 10 + Counter.Read()
End Sub

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

count๋Š” 0์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. Increment๋งˆ๋‹ค ๊ฐ™์€ ํ•„๋“œ์— 1์„ ๋”ํ•˜๋ฏ€๋กœ ๋‘ ๋ฒˆ ํ˜ธ์ถœํ•˜๋ฉด before=2์ž…๋‹ˆ๋‹ค. Counter.count=5 ๋ณ€๊ฒฝ์€ Read์—๋„ ๋ณด์ž…๋‹ˆ๋‹ค. Main์€ 2*10+5, Integer 25๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ƒˆ ์‹คํ–‰์€ ๋‹ค์‹œ 0์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

3. ๋ถˆ๋ฆฌ์–ธ ํ•จ์ˆ˜ ๊ฒฐ๊ณผ

# maximum=4๋Š” Limits ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. Allowed(3)์€ Integer 1, Allowed(7)์€ Integer 0์ž…๋‹ˆ๋‹ค. accepted=TRUE์™€ rejected=FALSE๋กœ ํ™•์ธํ•˜๋ฉฐ ์„ฑ๊ณตํ•˜๋ฉด Main์€ Integer 10์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Module Limits
    Private Const maximum = 4
    Public Function Allowed(ByVal amount)
        Return amount <= maximum
    End Function
End Module
Sub Main()
    Var accepted = Limits.Allowed(3)
    Var rejected = Limits.Allowed(7)
    If accepted = TRUE AndAlso rejected = FALSE Then
        Return 10
    End If
    Return 0
End Sub

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

maximum=4๋Š” Limits ๋‚ด๋ถ€์—์„œ ์ ‘๊ทผํ•ฉ๋‹ˆ๋‹ค. Allowed(3)์€ Integer 1, Allowed(7)์€ Integer 0์ž…๋‹ˆ๋‹ค. accepted=TRUE์™€ rejected=FALSE๋กœ ํ™•์ธํ•˜๋ฉฐ ์„ฑ๊ณตํ•˜๋ฉด Main์€ Integer 10์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


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

Basic