API Basic Types ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
AS
ClassicUO โข Basic
AS๋ ์ค์นผ๋ผ ๋ณ์์ ๋ณํ ๊ท์น์ ์ง์ ํฉ๋๋ค. ๋ด๋ถ ๊ฐ ์ข ๋ฅ๋ Integer, Decimal, String, Array, Object, Unit(๊ฐ ์์)์ ๋๋ค. Boolean์ Integer 1/0์ ์ฌ์ฉํฉ๋๋ค. ์ด Basic์ ๋ณ์นญ์ VB.NET์์ ๊ฐ์ ์ด๋ฆ์ ์ฐ๋ ํ์์ ์ ์ฅ ํฌ๊ธฐ๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
VAR name AS type [= value]
DIM name AS type [= value]
๋งค๊ฐ๋ณ์
nameโ ์ ์ธํ ๋ณ์ ์ด๋ฆ์ ๋๋ค. ์ฝ์ผ๋ฉด ํ์ฌ ๊ฐ์ ์ป์ผ๋ฉฐ ์ดํ์ ๋ชจ๋ ๋์ ์๋ AS ๋ณํ์ ๋ค์ ์ ์ฉํฉ๋๋ค.typeโ Integer, Long, Short, Byte: ๋ถํธ ์๋ 32๋นํธ ์ ์, ๋ฒ์ -2147483648โฆ2147483647์ ๋๋ค. Short์ Byte๋ ๋ฒ์๋ฅผ ์ค์ด์ง ์์ต๋๋ค. Double, Single, Decimal: ๋ด๋ถ ์ด๋ฆ์ด Decimal์ธ 64๋นํธ ์ด์ง ๋ถ๋์์์ ์ด๋ฉฐ ์ ํํ ์ญ์ง ์ฐ์ฐ์ด ์๋๋๋ค. String: ๋ฌธ์์ด. Boolean, Bool: Integer 1/0. Variant, Object: ์ ๋ ฅ ๊ฐ ์ข ๋ฅ๋ฅผ ์ ์งํ๋ฉฐ ๋ฐ๋์ ๊ฐ์ฒด ์ธ์คํด์ค์ผ ํ์๋ ์์ต๋๋ค. ํ์ ์ด๋ฆ์ ๋์๋ฌธ์๋ ๊ตฌ๋ถํ์ง ์์ต๋๋ค.valueโ ์ ํ์ ์ด๊ธฐ๊ฐ์ผ๋ก ์ซ์, ๋ฌธ์์ด, ๋ณ์ ๋๋ ํจ์ ๊ฒฐ๊ณผ๋ฅผ ์ง์ ํฉ๋๋ค. AS๋ ์ ์ธ ๊ตฌ๋ฌธ์ ๋๋ค. ์์์ ๋ช ์์ ์ผ๋ก ๋ณํํ๋ ค๋ฉด CInt(value), CDbl(value), CStr(value), CBool(value)๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ฐํ๊ฐ
AS ์์ฒด๋ ๊ฐ์ ๋ฐํํ์ง ์์ต๋๋ค. ๋ณ์๋ฅผ ์ฝ์ผ๋ฉด ์ ์ฅ๋ ์ข ๋ฅ์ ๊ฐ์ ๋ฐํํฉ๋๋ค. ๋ ผ๋ฆฌ ์ซ์๋ TRUE=1, FALSE=0์ ๋๋ค. ๊ฐ์ 2๋ 0์ด ์๋์ง๋ง 2=TRUE๋ ๊ฑฐ์ง์ ๋๋ค. ์์ดํ ์กด์ฌ ์ฌ๋ถ๋ count<>0 ๋๋ CBool(count)๋ก ํ์ธํฉ๋๋ค.
๋์
- ์ด๊ธฐ๊ฐ์ด ์๋ ํ์ ์ง์ VAR๋ ์ ์/Boolean์ 0, Double/Single/Decimal์ ๋ถ๋์์์ 0, String์ ๋น ๋ฌธ์์ด์ ์ค๋๋ค. ํ์ ์๋ VAR ๋ฐ VAR AS Variant/Object๋ Unit์ ๋๋ค. ์ค์นผ๋ผ DIM์ String์ ๋น ๋ฌธ์์ด, ๋๋จธ์ง์ 0์ ์ด๊ธฐ๊ฐ์ผ๋ก ๋ฃ์ต๋๋ค. Unit์ AS๋ฅผ ํตํด ๋์ ํด๋ Unit์ ๋๋ค.
- AS Integer๋ ๋ฒ์ ์์ ์์ ๋ถ๋ถ์ 0 ๋ฐฉํฅ์ผ๋ก ๋ฒ๋ฆฝ๋๋ค. CInt/CLng๋ ๋ฐ์ฌ๋ฆผํ๋ฉฐ ์ ํํ ์ ๋ฐ์ด๋ฉด 0์์ ๋ฉ์ด์ง๋๋ค. 2.6์ CInt์์ 3์ด์ง๋ง AS Integer์์๋ 2์ ๋๋ค. ์ ์ ๋ฌธ์์ด ์ ์ฒด๋ ์ญ์ง ์ ์ ๋๋ 0x 16์ง์์ฌ์ผ ํ๋ฏ๋ก "2.6"์ ์ ํจํ์ง ์์ต๋๋ค. ๋ณํ ์ ์ ๋ฒ์๋ฅผ ํ์ธํ์ธ์.
- AS Boolean์ ์๋ ๊ฐ์ ์ซ์ 0๊ณผ ๋น๊ตํฉ๋๋ค. 0์ด ์๋ ์ซ์๋ 1, 0์ 0์ ๋๋ค. ๋จ์ด๋ฅผ ํด์ํ์ง ์์ผ๋ฏ๋ก ๋ฌธ์์ด "false"๋ 1์ด ๋ฉ๋๋ค. CBool์ ๋จผ์ ์ซ์๋ก ๋ณํํฉ๋๋ค. ์ซ์/๋ ผ๋ฆฌ ๊ฐ์ ์ฌ์ฉํ๊ฑฐ๋ ๋ฌธ์์ด์ ์์ ๋จ์ด์ ๋ช ์์ ์ผ๋ก ๋น๊ตํ์ธ์.
- AS String์ ์์ง์ ๋ฌธ์์ด ํํ์ ์ฌ์ฉํฉ๋๋ค. AS Double/Single/Decimal์ ์์์ ์ด ์๋ ์ซ์ ๋ฌธ์์ด์ ํด์ํฉ๋๋ค. ์ซ์ AS๋ Array๋ฅผ 0์ผ๋ก ๋ฐ๊พธ์ง๋ง Object์ ์๋ชป๋ ์ซ์ ๋ฌธ์์ด์๋ TRY/CATCH๋ก ์ฒ๋ฆฌํ ์ ์๋ ์ค๋ฅ๋ฅผ ๋ ๋๋ค. ๋ฐ๋ฉด CInt/CLng/CDbl/CSng/CBool์ ๋์จํ๊ฒ ์ฝ์ด ์ธ์ํ ์ ์๋ ๋ฌธ์์ด, Array, Object, Unit์ ๋จผ์ 0์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค. ๋ฌธ์์ด ๋ณํ์ ๋ฏฟ๊ธฐ ์ ์ IsNumeric(value)๋ฅผ ํ์ธํ์ธ์.
- ์ ์ธ์ ์ด๊ธฐ์์ ๊ณ์ฐํ๊ณ AS ๋ณํ์ ์ ์ฉํ ๋ค ๊ฒฐ๊ณผ์ ํ์ ์ด๋ฆ์ ์ ์ฅํฉ๋๋ค. ์ดํ ๋์ ๋ง๋ค ๋ณํ์ ๋ฐ๋ณตํฉ๋๋ค. ๋ถ๋์์์ ์ ๊ทผ์ฟ๊ฐ์ด๋ฉฐ ์ ํํ ์ญ์ง ๊ธ์ก ๊ณ์ฐ์ ๋ณด์ฅํ์ง ์์ต๋๋ค. ๋ฒ์๋ VAR / DIM, ์ด๋ฆ ๋ณดํธ๋ CONST๋ฅผ ์ฐธ์กฐํ์ธ์.
- As ๋ค์๋ ์ ์ธ๋ Structure ์ด๋ฆ๋ ์ง์ํฉ๋๋ค. ์ด๊ธฐํ ์์ด ์๋ ํด๋น ํ์์ VAR์ DIM์ ๊ธฐ๋ณธ ํ๋ ๊ฐ์ ๋ง๋ญ๋๋ค. ๋์ผํ ์ ์ธ ํ์๋ง ํธํ๋๋ฉฐ ์๋ก ๋ค๋ฅธ ๊ตฌ์กฐ ํ์ ๊ฐ ๋ณํ์ ์์ต๋๋ค. ์ค์ฒฉ ๋ณต์ฌ์ ์ฐธ์กฐ ํ๋๋ Structure / New๋ฅผ ์ฐธ์กฐํ์ธ์.
์์
1. ๋์ ๋ณํ๊ณผ ๋ฐ์ฌ๋ฆผ
# source=2.6์ ๋ถ๋์์์ ์
๋๋ค. whole AS Integer๋ 2๋ฅผ ์ ์ฅํ๊ณ CInt(source)๋ rounded์ 3์ ๋ฐํํฉ๋๋ค. Main์ 2*10+3=23์ ๋ฐํํ์ฌ ๋ ๋ณํ์ ํจ๊ป ํ์ธํฉ๋๋ค.
Option Explicit On
SUB Main()
VAR source = 2.6
VAR whole AS Integer = source
VAR rounded = CInt(source)
RETURN whole * 10 + rounded
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
source=2.6์ ๋ถ๋์์์ ์ ๋๋ค. whole AS Integer๋ 2๋ฅผ ์ ์ฅํ๊ณ CInt(source)๋ rounded์ 3์ ๋ฐํํฉ๋๋ค. Main์ 2*10+3=23์ ๋ฐํํ์ฌ ๋ ๋ณํ์ ํจ๊ป ํ์ธํฉ๋๋ค.
2. ๊ฐ์์ ๋ ผ๋ฆฌ ๊ฐ์ ์ฐจ์ด
# count=2๋ ์์ดํ
๊ฐ์์
๋๋ค. hasItems AS Boolean์ 1์ด ๋ฉ๋๋ค. TRUE๋ ์ ํํ 1์ด๋ฏ๋ก count=TRUE๋ ๊ฑฐ์ง์ด๊ณ count<>0์ ์ฐธ์
๋๋ค. Main์ hasItems=1์ ์์ดํ
์ด ์๋ค๋ ๋ป์ด์ง ๊ฐ์๊ฐ ํ๋๋ผ๋ ๋ป์ ์๋๋๋ค.
Option Explicit On
SUB Main()
VAR count = 2
VAR hasItems AS Boolean = count
IF count = TRUE THEN
RETURN -1
END IF
IF count <> 0 THEN
RETURN hasItems
END IF
RETURN FALSE
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
count=2๋ ์์ดํ ๊ฐ์์ ๋๋ค. hasItems AS Boolean์ 1์ด ๋ฉ๋๋ค. TRUE๋ ์ ํํ 1์ด๋ฏ๋ก count=TRUE๋ ๊ฑฐ์ง์ด๊ณ count<>0์ ์ฐธ์ ๋๋ค. Main์ hasItems=1์ ์์ดํ ์ด ์๋ค๋ ๋ป์ด์ง ๊ฐ์๊ฐ ํ๋๋ผ๋ ๋ป์ ์๋๋๋ค.
3. Variant๋ ๊ฐ ์ข ๋ฅ๋ฅผ ์ ์ง
# value AS Variant๋ ์ฒ์ Integer 7, ๋ค์ String "ore"๋ฅผ ์ ์ฅํฉ๋๋ค. text AS String์ ๋น์ด ์๋ ์ํ๋ก ์์ํฉ๋๋ค. CStr(12)๋ ๋ฌธ์์ด "12"๋ฅผ ๋ง๋ค๊ณ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ฉด Main์ด ๋ฐํํ "ore12"๊ฐ ๋ฉ๋๋ค. Variant๋ ๊ฐ ์ข
๋ฅ ๋ณ๊ฒฝ์ ํ์ฉํฉ๋๋ค.
Option Explicit On
SUB Main()
VAR value AS Variant = 7
value = "ore"
VAR text AS String
text = value + CStr(12)
RETURN text
END SUB
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
value AS Variant๋ ์ฒ์ Integer 7, ๋ค์ String "ore"๋ฅผ ์ ์ฅํฉ๋๋ค. text AS String์ ๋น์ด ์๋ ์ํ๋ก ์์ํฉ๋๋ค. CStr(12)๋ ๋ฌธ์์ด "12"๋ฅผ ๋ง๋ค๊ณ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ๋ฉด Main์ด ๋ฐํํ "ore12"๊ฐ ๋ฉ๋๋ค. Variant๋ ๊ฐ ์ข ๋ฅ ๋ณ๊ฒฝ์ ํ์ฉํฉ๋๋ค.