API Basic NamedArguments ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki
Named arguments / :=
ClassicUO โข Basic
์ด๋ฆ ์๋ ์ธ์๋ ์ ์ธ๋ ๋งค๊ฐ๋ณ์ ์ด๋ฆ์ ๊ฐ์ ์ฐ๊ฒฐํ๋ฏ๋ก ์ ์ธ ์์์ ๋ค๋ฅด๊ฒ ์ธ ์ ์์ต๋๋ค. ์คํฌ๋ฆฝํธ ํ๋ก์์ , ํจ์, ๋ชจ๋, ๋ฑ๋ก๋ Basic/UO ํจ์์ ๋ค์ดํฐ๋ธ ๊ฐ์ฒด ๋ฉ์๋๋ฅผ ์ง์ํฉ๋๋ค.
์ ํํ ๊ตฌ๋ฌธ
FunctionName(parameterName:=expression, otherName:=expression)
FunctionName(positionalExpression, optionalName:=expression)
FunctionName([reservedName]:=expression)
๋งค๊ฐ๋ณ์
parameterName / [reservedName]โ ์ ์ธ์ด๋ ์๊ทธ๋์ฒ์ ์ด๋ฆ์ผ๋ก name:=value๋ฅผ ์ฐ๋ฉฐ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ์ง ์์ต๋๋ค. ์์ฝ์ด ์ด๋ฆ์ [to]:=100์ฒ๋ผ ๋ฌถ์ต๋๋ค. ๋๊ดํธ๋ ์ด๋ฆ์ ์ด์ค์ผ์ดํํ๋ฉฐ ๋ฐฐ์ด ์ธ๋ฑ์ค๊ฐ ์๋๋๋ค. ์ ์ ์๊ฑฐ๋ ์ค๋ณต๋ ์ด๋ฆ์ ์ค๋ฅ์ ๋๋ค.expressionโ ์ ๊ณตํ ์์ ์์ฑ ์์๋๋ก ์ผ์ชฝ์์ ์ค๋ฅธ์ชฝ์ผ๋ก ํ ๋ฒ์ฉ ๊ณ์ฐ๋ ๋ค ๋งค๊ฐ๋ณ์์ ๋ฐฐ์น๋ฉ๋๋ค. ํ์, ๋ฒ์, ByVal/ByRef๋ ํธ์ถ ํจ์์ ๊ท์น์ ๋ฐ๋ฆ ๋๋ค. ์ด๋ฆ ์ง์ ์ผ๋ก ์ผ๋ฐ ๊ฐ์ด ์์ ๊ฐ๋ฅํ ๋ณ์๋ก ๋ฐ๋์ง ์์ต๋๋ค.positionalExpression / optionalNameโ ์์น ์ธ์๋ฅผ ๋จผ์ ์ฐ๊ณ ์ฒซ ์ด๋ฆ ์๋ ์ธ์ ๋ค์๋ ๋ชจ๋ ์ด๋ฆ์ ์ง์ ํ์ธ์. ํ์ ๋งค๊ฐ๋ณ์๋ ์๋ตํ ์ ์์ต๋๋ค. ์๋ตํ ์คํฌ๋ฆฝํธ Optional์ ์ ๋ฌ ์์ ๊ณ์ฐํ ๋ค ์ ์ธ ์์๋๋ก ๊ธฐ๋ณธ ์์ ๊ณ์ฐํฉ๋๋ค. ๋ค์ดํฐ๋ธ ์ค๋ฒ๋ก๋๋ ๋ฑ๋ก๋ ์ด๋ฆ๊ณผ ๊ฐ์๋ง ์ฌ์ฉํ๋ฉฐ ์์ ๊ธฐ๋ณธ๊ฐ์ ์ถ๊ฐํ์ง ์์ต๋๋ค.
๋ฐํ๊ฐ
:= ์์ฒด๋ ๊ฐ์ ๋ฐํํ์ง ์์ต๋๋ค. ํจ์/API๋ ์๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ๊ณ Sub์๋ ์์์ ๊ฒฐ๊ณผ๊ฐ ์์ต๋๋ค. ์์ ๋ Integer 129์ String "21:12", "20:10:2"๋ฅผ ๋ฐํํ๋ฉฐ Boolean ์ฑ๊ณต ํ์๊ฐ ์๋๋๋ค.
๋์
- ์ค๋น ๋จ๊ณ๋ ์๋ชป๋ ์ด๋ฆ, ์ค๋ณต, ํ์ ์ธ์ ๋๋ฝ ๋๋ ๋ชจํธ์ฑ์ ์์ค ์์น์ SC027๋ก ๋ณด๊ณ ํฉ๋๋ค. ๋์ ๊ฐ์ฒด๋ ์คํ ์ ์ธ์ ์์ ๊ณ์ฐํ๊ธฐ ์ ์ ํ์ธํฉ๋๋ค. ๋ค์ดํฐ๋ธ ์ค๋ฒ๋ก๋๊ฐ ์๋ค๊ณ ์ธ์ ์๋ ํธ์ถ๋ก ๋์ฒดํ์ง ์์ต๋๋ค.
- ์ ์ ํธ์ถ ์์น์ ๋ถ๋ณ ๋งคํ์ ์บ์ํฉ๋๋ค. ์์ ์์ค ์์๋ก ๊ณ์ฐํ๊ณ ๋งค๊ฐ๋ณ์ ๋์ ๊ณผ ByRef ์ฐ๊ธฐ๋ ๋งคํ์ ๋ฐ๋ฆ ๋๋ค. ๊ธฐ๋ณธ๊ฐ๊ณผ ๋๋ฒ๊ฑฐ ์ธ์๋ ์ ํํ ์๊ทธ๋์ฒ์ ๋์ํฉ๋๋ค. ๋์ ์์ ๊ฐ์ฒด๋ ๋งค ํธ์ถ๋ง๋ค ์บก์ฒํ๋ฉฐ ์ด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฌ์ฉํ์ง ์์ต๋๋ค.
- ParamArray๋ ์ด๋ฆ์ผ๋ก ์ ๋ฌํ ์ ์์ต๋๋ค. ์ด๋ฆ ์๋ ํธ์ถ์์๋ ๋น์ ๋ ์ ์์ง๋ง ์์๋ฅผ ์ ๋ฌํ๋ ค๋ฉด ๋ชจ๋ ์์น ์ธ์๋ก ํธ์ถํด์ผ ํฉ๋๋ค. ์ผํ ์ฌ์ด ๋น ์๋ฆฌ๋ ์ง์ํ์ง ์์ต๋๋ค. ์ด ๋ถ๋ถ์งํฉ์ ์์น ์ธ์ ์ฐ์ ์ด๋ฉฐ ์ต์ VB.NET์ ์์ ํผํฉ์ ์๋๋๋ค. ์ค๋ ๋๋ ๊ฒ์ ์ง์ฐ์ ์ถ๊ฐํ์ง ์์ต๋๋ค.
์์
1. ๊ฐ์ด๋ฐ Optional ์๋ต
# Encode๋ x, y=2, z=3์ ์ ์ธํฉ๋๋ค. z:=9๋ฅผ ๋จผ์ , x:=1์ ๋์ค์ ์ ๊ณตํ๋ฉฐ y๋ 2๊ฐ ๋ฉ๋๋ค. ๊ณ์ฐ์ 1*100+2*10+9=129์
๋๋ค. Encode(1,2,9) ๋ฐ Encode(1,z:=9)์ ๊ฐ์ต๋๋ค.
Option Explicit On
Function Encode(ByVal x, Optional ByVal y=2, Optional ByVal z=3) As Integer
Return x*100 + y*10 + z
End Function
Sub Main()
Dim encoded = Encode(z:=9, x:=1)
Return encoded
End Sub
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Encode๋ x, y=2, z=3์ ์ ์ธํฉ๋๋ค. z:=9๋ฅผ ๋จผ์ , x:=1์ ๋์ค์ ์ ๊ณตํ๋ฉฐ y๋ 2๊ฐ ๋ฉ๋๋ค. ๊ณ์ฐ์ 1100+210+9=129์ ๋๋ค. Encode(1,2,9) ๋ฐ Encode(1,z:=9)์ ๊ฐ์ต๋๋ค.
2. ์ฌ๋ฐ๋ฅธ ๋ณ์์ ByRef ์ฐ๊ธฐ
# Change๋ ByRef left์ right๋ฅผ ๋ฐ์ต๋๋ค. right:=a๋ a=1์ right์, left:=b๋ b=2๋ฅผ left์ ์ฐ๊ฒฐํฉ๋๋ค. left์ 10, right์ 20์ ๋ํ ๋ค b=12, a=21์ ๋ค์ ์๋๋ค. Main์ "21:12"๋ฅผ ๋ฐํํฉ๋๋ค. := ์ผ์ชฝ์ ๋งค๊ฐ๋ณ์์ด๊ณ ์ค๋ฅธ์ชฝ์ ํธ์ถ์ ๋ณ์์
๋๋ค.
Option Explicit On
Sub Change(ByRef left, ByRef right)
left += 10
right += 20
End Sub
Sub Main()
Dim a = 1
Dim b = 2
Change(right:=a, left:=b)
Return CStr(a) & ":" & CStr(b)
End Sub
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
Change๋ ByRef left์ right๋ฅผ ๋ฐ์ต๋๋ค. right:=a๋ a=1์ right์, left:=b๋ b=2๋ฅผ left์ ์ฐ๊ฒฐํฉ๋๋ค. left์ 10, right์ 20์ ๋ํ ๋ค b=12, a=21์ ๋ค์ ์๋๋ค. Main์ "21:12"๋ฅผ ๋ฐํํฉ๋๋ค. := ์ผ์ชฝ์ ๋งค๊ฐ๋ณ์์ด๊ณ ์ค๋ฅธ์ชฝ์ ํธ์ถ์ ๋ณ์์ ๋๋ค.
3. ๋ค์ดํฐ๋ธ ๋ชฉ๋ก ์กฐ์
# List()๊ฐ ๋ชฉ๋ก์ ๋ง๋ญ๋๋ค. Add(value:=10)์ ๋ฐํ๊ฐ ์์ด 10์ ์ถ๊ฐํฉ๋๋ค. Insert(value:=20,index:=0)์ ์ธ๋ฑ์ค 0์ 20์ ๋ฃ๊ณ 10์ ์ธ๋ฑ์ค 1๋ก ์ฎ๊น๋๋ค. Item(index:=...)์ ์์๋ฅผ, Count()๋ 2๋ฅผ ๋ฐํํฉ๋๋ค. Main ๊ฒฐ๊ณผ๋ "20:10:2"์
๋๋ค. UO.Name(...)๋ ๊ฐ์ ๊ท์น์ ์ฐ๋ฉฐ ๊ฐ ๋ช
๋ น์ ๋ฑ๋ก ์ด๋ฆ๊ณผ ๋ฐํ ๊ณ์ฝ์ ๋ฐ๋ฆ
๋๋ค.
Option Explicit On
Sub Main()
Dim items = List()
items.Add(value:=10)
items.Insert(value:=20, index:=0)
Dim first = items.Item(index:=0)
Dim second = items.Item(index:=1)
Return CStr(first) & ":" & CStr(second) & ":" & CStr(items.Count())
End Sub
๋งค๊ฐ๋ณ์ ๋ฐ ์คํ ์ค๋ช :
List()๊ฐ ๋ชฉ๋ก์ ๋ง๋ญ๋๋ค. Add(value:=10)์ ๋ฐํ๊ฐ ์์ด 10์ ์ถ๊ฐํฉ๋๋ค. Insert(value:=20,index:=0)์ ์ธ๋ฑ์ค 0์ 20์ ๋ฃ๊ณ 10์ ์ธ๋ฑ์ค 1๋ก ์ฎ๊น๋๋ค. Item(index:=...)์ ์์๋ฅผ, Count()๋ 2๋ฅผ ๋ฐํํฉ๋๋ค. Main ๊ฒฐ๊ณผ๋ "20:10:2"์ ๋๋ค. UO.Name(...)๋ ๊ฐ์ ๊ท์น์ ์ฐ๋ฉฐ ๊ฐ ๋ช ๋ น์ ๋ฑ๋ก ์ด๋ฆ๊ณผ ๋ฐํ ๊ณ์ฝ์ ๋ฐ๋ฆ ๋๋ค.