API Basic Comparison ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
ClassicUO โข Basic
๋น๊ต ์ฐ์ฐ์๋ ๋ ๊ฐ์ ๊ฒ์ฌํ์ฌ IF, ๋ณ์ ๋์ ๋๋ ๋ณด์กฐ ํจ์ RETURN์์ ์ฌ์ฉํ ๋ ผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ง๋ญ๋๋ค.
left = right
left == right
left <> right
left < right
left > right
left <= right
left >= right
-
leftโ ์ผ์ชฝ ๊ฐ: ๋ฆฌํฐ๋ด, ์ ์ธ๋ ๋ณ์, ์ ๋๋ ํจ์ ๊ฒฐ๊ณผ์ ๋๋ค. -
rightโ ์ค๋ฅธ์ชฝ ๊ฐ์ ๋๋ค. ํฌ๊ธฐ ๋น๊ต๋ Integer ๋๋ Decimal์ด ํ์ํ๋ฉฐ ๋๋ฑ ๋น๊ต๋ ๋ค๋ฅธ ๊ฐ ์ข ๋ฅ๋ ์ง์ํฉ๋๋ค. -
operatorโ ์์์ =์ ==๋ ๊ฐ์, <>๋ ๋ค๋ฆ, <์ >๋ ์๊ฒฉํ ํฌ๊ธฐ ๋น๊ต, <=์ >=๋ ๊ฐ์์ ํฌํจํฉ๋๋ค. ๋ ๋ฆฝ๋ name = expression ๋ฌธ์ ๋์ ์ ๋๋ค.
๋น๊ต๊ฐ ์ฑ๋ฆฝํ๋ฉด Integer 1(TRUE), ์๋๋ฉด Integer 0(FALSE)์ ๋๋ค. ์ด ๊ฒฐ๊ณผ์ ๋ํด result=1์ result=TRUE์ ๊ฐ๊ณ result=0์ result=FALSE์ ๊ฐ์ต๋๋ค. ์๋์ด๋ ID๋ ์๋ฏธ๊ฐ ๋ค๋ฆ ๋๋ค. 2๋ 0์ด ์๋์ง๋ง 2=TRUE๋ ๊ฑฐ์ง์ ๋๋ค. 0์ด ์๋ ์๋์ count<>0์ผ๋ก ๊ฒ์ฌํ์ธ์.
- Integer์ Decimal์ ์ซ์๋ก ๋น๊ตํ๋ฏ๋ก 5=5.0์ ์ฐธ์ ๋๋ค. ํ ์คํธ๋ ์๋ ๋ณํํ์ง ์์ "5"=5๋ ๊ฑฐ์ง์ ๋๋ค. ๋ฌธ์์ด ๋๋ฑ ๋น๊ต๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๋ ์์ ๋น๊ต์ด๋ฏ๋ก "Ore"<>"ore"์ ๋๋ค. ํ ์คํธ, ๋ฐฐ์ด, ๊ฐ์ฒด, Unit์ <, >, <=, >= ํฌ๊ธฐ ๋น๊ต๋ ์ค๋ฅ์ ๋๋ค.
- ๋ฐฐ์ด๊ณผ ๋ค์ดํฐ๋ธ ๊ฐ์ฒด์ ๋๋ฑ ๋น๊ต๋ ๋ด์ฉ์ด ์๋ ์ฐธ์กฐ ๋์ผ์ฑ์ ๊ฒ์ฌํฉ๋๋ค. Unit๋ผ๋ฆฌ๋ ๊ฐ์ง๋ง Unit์ ์ซ์ 0์ด ์๋๋๋ค. Integer/Decimal ์ซ์ ์์ ์ ์ธํ ์๋ก ๋ค๋ฅธ ์ข ๋ฅ๋ ๊ฐ์ง ์์ต๋๋ค. NaN์ ์์ ๊ณผ๋ ๋ค๋ฅด๋ฉฐ NaN์ ํฌํจํ ์ซ์ ํฌ๊ธฐ ๋น๊ต๋ ๋ชจ๋ ๊ฑฐ์ง์ ๋๋ค.
- ์ฐ์ ์ ๋จผ์ ๊ณ์ฐํ๊ณ ์ฐ์ ๋น๊ต๋ ์ผ์ชฝ๋ถํฐ ์ฒ๋ฆฌํฉ๋๋ค. 1<3<2๋ (1<3)<2์ด๋ฏ๋ก ์ฐธ์ ๋๋ค. ๋ฒ์ ๊ฒ์ฌ๋ (low<=value) AND (value<=high)๋ก ์ฐ๊ณ ๊ดํธ๋ก ๋ฌถ์์ ๋ช ํํ ํ์ธ์.
- ์ด์ง ๋ถ๋์์์ ์ ๋ฐ์ฌ๋ฆผ๋ ์ ์์ต๋๋ค. ๊ทผ์ฌ ์ธก์ ๊ฐ์ ์ ์ ํ ์์๊ฐ ์๋ ํ์ฉ ์ค์ฐจ๋ก Abs(actual-expected)<=tolerance๋ฅผ ์ฌ์ฉํ์ธ์. ํ์ฉ ์ค์ฐจ๋ ์คํฌ๋ฆฝํธ์์ ์ ํ๋ฉฐ ์ฐ์ฐ์๊ฐ ์๋ ์ ์ฉํ์ง ์์ต๋๋ค.
- =๋ ๋์ผํ ์ ์ธ ํ์๊ณผ ๋์ ํ๋๋ฅผ ๋น๊ตํ๋ฉฐ <>๋ ๋ฐ๋ ๊ฒฐ๊ณผ์ ๋๋ค. ์ฐธ์กฐ ํ๋๋ ๋์ผ์ฑ์ผ๋ก ๋น๊ตํฉ๋๋ค. ์ด๋ ์์ง ํ์ฅ์ด๋ฉฐ ๋ชจ๋ VB.NET ๊ตฌ์กฐ์ =๊ฐ ์ง์๋๋ค๋ ๋ป์ ์๋๋๋ค. ์ ์ฅ๋ ํด์์ ์ด๋ฏธ ๋ฐฉ๋ฌธํ ์์ผ๋ก ๊ณต์ ์ค์ฒฉ ๊ฐ์ ๋ฐ๋ณตํด์ ํผ์น๋ ์์ ์ ๋ฐฉ์งํฉ๋๋ค.
# InRange๋ value=4, low=2, high=5๋ฅผ ๋ฐ์ต๋๋ค. ๋ ๋น๊ต ๋ชจ๋ 1์ด๊ณ AND ๊ฒฐ๊ณผ๋ 1์
๋๋ค. Main์ accepted=TRUE๋ฅผ ๊ฒ์ฌํ์ฌ 1์ ๋ฐํํฉ๋๋ค. ๋ณด์กฐ ํจ์์ ํธ์ถ ์ฝ๋ ์ ์ฒด๊ฐ ํฌํจ๋ฉ๋๋ค.
Option Explicit On
FUNCTION InRange(value, low, high)
RETURN (low <= value) AND (value <= high)
END FUNCTION
SUB Main()
VAR accepted = InRange(4, 2, 5)
IF accepted = TRUE THEN
RETURN 1
END IF
RETURN 0
END SUB๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
InRange๋ value=4, low=2, high=5๋ฅผ ๋ฐ์ต๋๋ค. ๋ ๋น๊ต ๋ชจ๋ 1์ด๊ณ AND ๊ฒฐ๊ณผ๋ 1์ ๋๋ค. Main์ accepted=TRUE๋ฅผ ๊ฒ์ฌํ์ฌ 1์ ๋ฐํํฉ๋๋ค. ๋ณด์กฐ ํจ์์ ํธ์ถ ์ฝ๋ ์ ์ฒด๊ฐ ํฌํจ๋ฉ๋๋ค.
# sameCase๋ "Ore"์ "ore"๋ฅผ ๋น๊ตํ์ฌ 0์
๋๋ค. sameKind๋ "5"์ Integer 5๋ฅผ ๋น๊ตํ์ฌ 0์
๋๋ค. converted๋ CDbl("5")๋ฅผ ๋ช
์์ ์ผ๋ก ์จ์ 1์
๋๋ค. CStr๋ก ์ง๋จ ๋ฌธ์์ด "0:0:1"์ ๋ฐํํฉ๋๋ค.
Option Explicit On
SUB Main()
VAR sameCase = ("Ore" = "ore")
VAR sameKind = ("5" == 5)
VAR converted = (CDbl("5") = 5)
RETURN CStr(sameCase) + ":" + CStr(sameKind) + ":" + CStr(converted)
END SUB๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
sameCase๋ "Ore"์ "ore"๋ฅผ ๋น๊ตํ์ฌ 0์ ๋๋ค. sameKind๋ "5"์ Integer 5๋ฅผ ๋น๊ตํ์ฌ 0์ ๋๋ค. converted๋ CDbl("5")๋ฅผ ๋ช ์์ ์ผ๋ก ์จ์ 1์ ๋๋ค. CStr๋ก ์ง๋จ ๋ฌธ์์ด "0:0:1"์ ๋ฐํํฉ๋๋ค.
# NearlyEqual์ 0.1+0.2, expected=0.3, tolerance=0.000001์ ๋ฐ์ต๋๋ค. ์์ ํ์ฉ ์ค์ฐจ๋ ๊ฑฐ๋ถํฉ๋๋ค. Abs๋ ์ฐจ์ด์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๊ณ <=๋ ํ์ฉ ๋ฒ์ ๋ด ํธ์ฐจ๋ฅผ ํ์ฉํฉ๋๋ค. Main์ 1์ ๋ฐํํฉ๋๋ค. ๋ชจ๋ ๋ณด์กฐ ํจ์ ์ธ์๋ฅผ ๋ช
์ํฉ๋๋ค.
Option Explicit On
FUNCTION NearlyEqual(actual, expected, tolerance)
IF tolerance < 0 THEN
RETURN FALSE
END IF
RETURN Abs(actual - expected) <= tolerance
END FUNCTION
SUB Main()
RETURN NearlyEqual(0.1 + 0.2, 0.3, 0.000001)
END SUB๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
NearlyEqual์ 0.1+0.2, expected=0.3, tolerance=0.000001์ ๋ฐ์ต๋๋ค. ์์ ํ์ฉ ์ค์ฐจ๋ ๊ฑฐ๋ถํฉ๋๋ค. Abs๋ ์ฐจ์ด์ ํฌ๊ธฐ๋ฅผ ๊ตฌํ๊ณ <=๋ ํ์ฉ ๋ฒ์ ๋ด ํธ์ฐจ๋ฅผ ํ์ฉํฉ๋๋ค. Main์ 1์ ๋ฐํํฉ๋๋ค. ๋ชจ๋ ๋ณด์กฐ ํจ์ ์ธ์๋ฅผ ๋ช ์ํฉ๋๋ค.