API Basic Include ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
Include
ClassicUO โข Basic
Include๋ ๊ตฌ๋ฌธ ๋ถ์๊ณผ ์คํ ์ ์ ๋ค๋ฅธ ์์ค ํ์ผ์ ์ฝ์ต๋๋ค. ์ฃผ ์คํฌ๋ฆฝํธ์์ ํจ์์ ๋ณ์๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ํ์ง๋ง ํ๋ก์์ ๋ ์ค๋ ๋๋ฅผ ์๋ ์คํํ์ง ์์ต๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
Include "fileName"
๋งค๊ฐ๋ณ์
fileNameโ fileName: ์์๋ฐ์ดํ ๋๋ ํฐ๋ฐ์ดํ๋ก ๊ฐ์ผ ๋น์ด ์์ง ์์ ํ์ผ ์ด๋ฆ. ์๋ ๋ฐ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ง์ํ๋ฉฐ ๋ณ์๋ ์์ด ์๋ ๋ฆฌํฐ๋ด ๊ฒฝ๋ก์ฌ์ผ ํฉ๋๋ค. ํ์ฅ์๋ ์์ ์ง๋ง ๋ด์ฉ์ ์์ง์ด ์ง์ํ๋ ์์ค ์ฝ๋์ฌ์ผ ํฉ๋๋ค.
๋ฐํ๊ฐ
๋ฐํ๊ฐ์ด ์์ต๋๋ค. ์์ค ์ค๋น ์ง์๋ฌธ์ด๋ฏ๋ก Include(...)๋ฅผ ๋์ ํ๊ฑฐ๋ ID, TRUE/FALSE, 1/0์ ๊ธฐ๋ํ์ง ๋ง์ธ์. ํฌํจ๋ ํจ์๋ RETURN์ผ๋ก ์์ ์ ๊ฐ์ ๋ฐํํฉ๋๋ค.
๋์
- SUB/FUNCTION ๋ฐ์์ Include๋ฅผ ํ ์ค์ ๋ฐ๋ก ์๋๋ค. ํฌํจํ๋ ํ์ผ ์์ ๋จผ์ ์ฐพ๊ณ ๊ทธ ํ์ผ์ Include ํ์ ํด๋๋ฅผ ์ฐพ์ต๋๋ค. ์ค์ฒฉ ๊ฒฝ๋ก๋ ํ์ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ธฐ์ค์ ๋๋ค. ์๋ ๊ฒฝ๋ก๋ฅผ ์ฐ๊ธฐ ์ ์ ์ฃผ ํ์ผ์ ์ ์ฅํ์ธ์.
- ์ ์ฒด ๊ฒฝ๋ก๋ง๋ค ํ ๋ฒ๋ง ํฌํจํฉ๋๋ค. A โ B โ A ์ํ์ SC016์ ๋๋ค. ๊ฒฝ๋กยท์ ๊ทผยท๊ตฌ๋ฌธ ์ค๋ฅ๋ ์ ์ญ ์ด๊ธฐํ ์ ์ ์คํ์ ๋ง์ต๋๋ค. ์ง๋จ๊ณผ ๋๋ฒ๊ฑฐ๋ ์๋ณธ ํ์ผ๊ณผ ์ค์ ์ ์งํฉ๋๋ค.
- ๋ฌธ์์ด ๋ฆฌํฐ๋ด๊ณผ SUB/FUNCTION์ ์์ํ ํ์ผ ์์์ ๋ซ์์ผ ํฉ๋๋ค. ์ ์ญ ๋ณ์๋ ์์๋ฅผ ์ค๋ณต ์ ์ธํ๋ฉด ์คํ ์ ์ SC017์ด ๋ฐ์ํฉ๋๋ค.
- ๋ค์ ์คํ์ ์์ ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฝ์ต๋๋ค. ์ด๋ฏธ ์ค๋น๋๊ฑฐ๋ ์คํ ์ค์ธ ์คํฌ๋ฆฝํธ๋ ์ฝ๋ ์ค๋ ์ท์ ์ ์งํฉ๋๋ค. ํ๋กํ์ ๋ณต์ฌํ๊ฑฐ๋ ๋ค๋ฅธ ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ง ์์ต๋๋ค.
- ๊ฐ ํ์ผ์ ์์ฒด ์ ์ธ ์ ์ Option Explicit๋ฅผ ์ง์ ํ ์ ์์ต๋๋ค. ์๋ตํ๋ฉด ์ฃผ ํ์ผ ์ค์ ์ ์์ํฉ๋๋ค. ์ ์ธ์ ์ด๋ฆ ๊ณต๊ฐ์ ๊ณต์ ํ๋ฉฐ ๋ชจ๋์ ์๋ ์์ฑํ์ง ์์ต๋๋ค.
- UTF-8๋ก ์ฝ๊ณ BOM์ ์ธ์ํฉ๋๋ค. ํ ๋ฒ ์ค๋นํ ๋ ์ฃผ ํ์ผ ํฌํจ 128๊ฐ ํ์ผ, ์ค์ฒฉ 32๋จ๊ณ, ์์ค ๋ฌธ์ 16,777,216๊ฐ๊ฐ ํ๋์ ๋๋ค. ์ฃผ์์ด๋ ๋ฌธ์์ด์ Include๋ ํ์ผ์ ์ฝ์ง ์์ต๋๋ค.
- ๊ฐ ์์ ๋ ๋ณ๋ ํด๋์ ๋๋ค. Main.bas์ ํ์๋ ๋ชจ๋ ํ์ผ์ ์ ํํ ์ด๋ฆ๊ณผ ํ์ ํด๋์ ์ ์ฅํ์ธ์. ์์ฑ๋ ๋ฌถ์์ API Manual/Examples/Basic.Include/1, /2, /3์ ์์ต๋๋ค. ๋ชจ๋ ํฉ์น์ง ๋ง๊ณ Main.bas๋ฅผ ์คํํ์ธ์.
์์
1. ๊ณตํต ํจ์
# Main.bas๊ฐ Common.bas๋ฅผ ํฌํจํ๊ณ Add(4, 7)์ ํธ์ถํฉ๋๋ค. left์ right๋ ๊ฐ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค. Add๋ ํฉ๊ณ๋ฅผ, Main์ Integer 11์ ๋ฐํํฉ๋๋ค. Common.bas๋ ํผ์ ์์ํ์ง ์์ต๋๋ค.
Option Explicit On
Include "Common.bas"
SUB Main()
RETURN Add(4, 7)
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Main.bas๊ฐ Common.bas๋ฅผ ํฌํจํ๊ณ Add(4, 7)์ ํธ์ถํฉ๋๋ค. left์ right๋ ๊ฐ์ผ๋ก ์ ๋ฌ๋ฉ๋๋ค. Add๋ ํฉ๊ณ๋ฅผ, Main์ Integer 11์ ๋ฐํํฉ๋๋ค. Common.bas๋ ํผ์ ์์ํ์ง ์์ต๋๋ค.
Common.bas
Option Explicit On
FUNCTION Add(ByVal left, ByVal right)
RETURN left + right
END FUNCTION
2. ์ค์ฒฉ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
# Main.bas๋ lib/Route.bas๋ฅผ ํฌํจํ๊ณ ์ด ํ์ผ์ ์์ ์ lib ํด๋์์ Math.bas๋ฅผ ํฌํจํฉ๋๋ค. Distance(-3, 5)๋ dx=-3, dy=5๋ฅผ Manhattan์ ์ ๋ฌํฉ๋๋ค. Abs๊ฐ ๋ถํธ๋ฅผ ์ ๊ฑฐํด ํฉ๊ณ Integer 8์ ๋ฐํํฉ๋๋ค. ์บ๋ฆญํฐ๋ฅผ ์์ง์ด์ง ์์ต๋๋ค.
Option Explicit On
Include "lib/Route.bas"
SUB Main()
RETURN Distance(-3, 5)
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Main.bas๋ lib/Route.bas๋ฅผ ํฌํจํ๊ณ ์ด ํ์ผ์ ์์ ์ lib ํด๋์์ Math.bas๋ฅผ ํฌํจํฉ๋๋ค. Distance(-3, 5)๋ dx=-3, dy=5๋ฅผ Manhattan์ ์ ๋ฌํฉ๋๋ค. Abs๊ฐ ๋ถํธ๋ฅผ ์ ๊ฑฐํด ํฉ๊ณ Integer 8์ ๋ฐํํฉ๋๋ค. ์บ๋ฆญํฐ๋ฅผ ์์ง์ด์ง ์์ต๋๋ค.
lib/Route.bas
Option Explicit On
Include "Math.bas"
FUNCTION Distance(ByVal dx, ByVal dy)
RETURN Manhattan(dx, dy)
END FUNCTION
lib/Math.bas
Option Explicit On
FUNCTION Manhattan(ByVal dx, ByVal dy)
RETURN Abs(dx) + Abs(dy)
END FUNCTION
3. ๋ฐ๋ณต ํฌํจ
# Common.bas์ ./Common.bas๋ ๊ฐ์ ํ์ผ์ด๋ฏ๋ก CONST์ ํจ์๊ฐ ํ ๋ฒ๋ง ์ ์ธ๋ฉ๋๋ค. SharedValue=7์ด๋ฉฐ GetShared()๋ 7์ ๋ฐํํฉ๋๋ค. Main์ 2๋ฅผ ๊ณฑํด Integer 14๋ฅผ ๋ฐํํฉ๋๋ค. ๋ ํ์ผ ๋ชจ๋ Option Explicit On์ ์ฌ์ฉํฉ๋๋ค.
Option Explicit On
Include "Common.bas"
Include "./Common.bas"
SUB Main()
RETURN GetShared() * 2
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Common.bas์ ./Common.bas๋ ๊ฐ์ ํ์ผ์ด๋ฏ๋ก CONST์ ํจ์๊ฐ ํ ๋ฒ๋ง ์ ์ธ๋ฉ๋๋ค. SharedValue=7์ด๋ฉฐ GetShared()๋ 7์ ๋ฐํํฉ๋๋ค. Main์ 2๋ฅผ ๊ณฑํด Integer 14๋ฅผ ๋ฐํํฉ๋๋ค. ๋ ํ์ผ ๋ชจ๋ Option Explicit On์ ์ฌ์ฉํฉ๋๋ค.
Common.bas
Option Explicit On
CONST SharedValue = 7
FUNCTION GetShared()
RETURN SharedValue
END FUNCTION