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์ ๋ฐํํฉ๋๋ค.