API Basic Parameters ko - LIHACHTETAN/ClassicUO-BadNewbie-BasicIDE GitHub Wiki

Parameters / ByRef / ByVal / Optional / ParamArray

ClassicUO โ€ข Basic

๋งค๊ฐœ๋ณ€์ˆ˜๋Š” SUB/FUNCTION์— ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค. ByRef๋Š” ๋ณ€๊ฒฝ ๊ฐ’์„ ํ˜ธ์ถœ์ž์—๊ฒŒ ๊ธฐ๋กํ•˜๊ณ  ByVal์€ ํ˜ธ์ถœ์ž์˜ ๋ณ€์ˆ˜๋ฅผ ๋ณด์กดํ•ฉ๋‹ˆ๋‹ค. Optional์€ ์ƒ๋žตํ•œ ์ธ์ˆ˜๋ฅผ ๋ณด์ถฉํ•˜๊ณ  ParamArray๋Š” ๋‚˜๋จธ์ง€ ์ธ์ˆ˜๋ฅผ ๋ชจ์๋‹ˆ๋‹ค. ํ˜ธ์ถœ ๋ช…๋ น์ด ์•„๋‹ˆ๋ผ ์„ ์–ธ ํ•œ์ •์ž์ž…๋‹ˆ๋‹ค.

์ •ํ™•ํ•œ ๊ตฌ๋ฌธ

Sub name(ByRef target, ByVal value, Optional ByVal amount = 2, ParamArray rest())
Function name(parameters) As type
name(arguments)

๋งค๊ฐœ๋ณ€์ˆ˜

  • name / As type โ€” name / As type: ๋งค๊ฐœ๋ณ€์ˆ˜ ์ด๋ฆ„๊ณผ ์„ ํƒ์ ์ธ As ์ž…๋ ฅ ํ˜•์‹ ๋ณ€ํ™˜์ž…๋‹ˆ๋‹ค. ์œ„์น˜ ๋˜๋Š” name:=value๋กœ ์—ฐ๊ฒฐํ•˜๋ฉฐ ํ•œ์ •์ž๋Š” ์„ ์–ธ์— ์”๋‹ˆ๋‹ค. Basic.NamedArguments๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”.
  • ByRef โ€” ByRef: ์“ฐ๊ธฐ ๊ฐ€๋Šฅํ•œ ๋ณ€์ˆ˜ ๋˜๋Š” ๊ธฐ์กด ์ธ๋ฑ์Šค ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์ด ์—”์ง„์€ ByVal์ด ์—†์–ด๋„ ๊ฐ’์„ ๋‹ค์‹œ ๊ธฐ๋กํ•˜๋ฏ€๋กœ VB.NET ๊ธฐ๋ณธ๊ฐ’๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ๋ฆฌํ„ฐ๋Ÿด, ์ƒ์ˆ˜, ๊ณ„์‚ฐ์‹์€ ์ž„์‹œ ๊ฐ’์ž…๋‹ˆ๋‹ค.
  • ByVal โ€” ByVal: ๊ฐ’์˜ ์ง€์—ญ ๋ณต์‚ฌ๋ณธ์ž…๋‹ˆ๋‹ค. ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•ด๋„ ํ˜ธ์ถœ์ž์˜ ๋ณ€์ˆ˜๋ฅผ ๊ต์ฒดํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด๊ณผ ๊ฐ์ฒด๋Š” ์ฐธ์กฐ๋ฅผ ๊ณต์œ ํ•˜๋ฉฐ ๊นŠ์€ ๋ณต์‚ฌ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.
  • Optional / defaultValue โ€” Optional / defaultValue: ๋งˆ์ง€๋ง‰ ์ธ์ˆ˜๋ฅผ ์ƒ๋žตํ•˜๋ฉด = ๋’ค์˜ ์‹์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๋ช…์‹œ์  ๊ธฐ๋ณธ๊ฐ’์„ ์ง€์ •ํ•˜์„ธ์š”. ์—†์œผ๋ฉด ์ƒ๋žต๋œ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ Unit์„ ๋ฐ›์Šต๋‹ˆ๋‹ค.
  • ParamArray โ€” ParamArray values(): ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‚˜๋จธ์ง€ ๊ฐ’์„ 0๊ฐœ ์ด์ƒ ๋ฐ›์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด ํ•˜๋‚˜๋Š” ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์Šค์นผ๋ผ ์ธ์ˆ˜๋Š” ์ƒˆ ๋ฐฐ์—ด๋กœ ๋ฌถ์Šต๋‹ˆ๋‹ค. GetArrayLength๋Š” ๊ธธ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜ํ™˜๊ฐ’

ํ•œ์ •์ž๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. RETURN์€ ๊ฒฐ๊ณผ๋ฅผ ๋”ฐ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ByRef๋Š” ์ธ์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๊ฒƒ์ด์ง€ ๋ฐ˜ํ™˜๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค. RETURN ์—†๋Š” SUB๋Š” Unit์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์˜ˆ์ œ ์ˆซ์ž๋Š” ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์ด๋ฉฐ TRUE/FALSE ํ”Œ๋ž˜๊ทธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

๋™์ž‘

  • ์ธ์ˆ˜๋Š” ์™ผ์ชฝ๋ถ€ํ„ฐ ํ•œ ๋ฒˆ์”ฉ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค ByRef๋Š” ์ปจํ…Œ์ด๋„ˆ์™€ ์ธ๋ฑ์Šค/ํ‚ค๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ธ์ˆ˜๊ฐ€ ์ปจํ…Œ์ด๋„ˆ ๋ณ€์ˆ˜๋ฅผ ์žฌ๋Œ€์ž…ํ•ด๋„ ๊ธฐ๋ก ์œ„์น˜๋ฅผ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์ง„์ž…ํ•  ๋•Œ ์ง€์—ญ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ข…๋ฃŒ ์‹œ ๋‚ด๋ถ€ FINALLY ๋’ค์— ๋งค๊ฐœ๋ณ€์ˆ˜ ์ˆœ์„œ๋Œ€๋กœ ByRef ๊ฐ’์„ ๊ธฐ๋กํ•˜๋ฉฐ ๋ณธ๋ฌธ์—์„œ ์˜ค๋ฅ˜๋กœ ๋‚˜์˜ฌ ๋•Œ๋„ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ฐ™์€ ๋ณ€์ˆ˜๋ฅผ ๋‘ ๋ฒˆ ์ „๋‹ฌํ•ด๋„ ์ง€์—ญ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ฆ‰์‹œ ์—ฐ๊ฒฐ๋˜์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค. ๋งˆ์ง€๋ง‰ ๊ธฐ๋ก์ด ๋‚จ์Šต๋‹ˆ๋‹ค.
  • ByVal์€ ํ˜ธ์ถœ์ž ๋ณ€์ˆ˜์˜ ๊ต์ฒด๋ฅผ ๋ง‰์ง€๋งŒ ๊ณต์œ  ๋ฐฐ์—ด์ด๋‚˜ ๊ฐ์ฒด ๋‚ด๋ถ€ ์ˆ˜์ •์€ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค. ReDim์€ ์ƒˆ ์ง€์—ญ ์ฐธ์กฐ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ๋…๋ฆฝ ๋ฐ์ดํ„ฐ์—๋Š” ๋ช…์‹œ์  ๋ณต์‚ฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์œ„์น˜ ์ธ์ˆ˜ ํ˜ธ์ถœ: Optional์€ ๋’ค์—์„œ๋ถ€ํ„ฐ ์ƒ๋žตํ•˜๋ฉฐ ์‰ผํ‘œ ์‚ฌ์ด์˜ ๋นˆ ์ธ์ˆ˜๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์‹์€ ์ƒ๋žตํ•  ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•˜๋Š” ์—”์ง„ ์‹์ด๋ฉฐ VB.NET ์ƒ์ˆ˜์ผ ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ์œ„์น˜ ์ธ์ˆ˜๋ฅผ ๋จผ์ € ์“ฐ๊ณ  ์ฒซ ์ด๋ฆ„ ์žˆ๋Š” ์ธ์ˆ˜ ๋’ค์—๋Š” ๋ชจ๋‘ ์ด๋ฆ„์„ ์ง€์ •ํ•˜์„ธ์š”. ํ•„์ˆ˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ์ƒ๋žตํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ƒ๋žตํ•œ ์Šคํฌ๋ฆฝํŠธ Optional์€ ์ „๋‹ฌ ์‹์„ ๊ณ„์‚ฐํ•œ ๋’ค ์„ ์–ธ ์ˆœ์„œ๋Œ€๋กœ ๊ธฐ๋ณธ ์‹์„ ๊ณ„์‚ฐํ•ฉ๋‹ˆ๋‹ค. ๋„ค์ดํ‹ฐ๋ธŒ ์˜ค๋ฒ„๋กœ๋“œ๋Š” ๋“ฑ๋ก๋œ ์ด๋ฆ„๊ณผ ๊ฐœ์ˆ˜๋งŒ ์‚ฌ์šฉํ•˜๋ฉฐ ์ž„์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ParamArray๋Š” ๋ฌถ์ธ ์Šค์นผ๋ผ๋ฅผ ์›๋ž˜ ๋ณ€์ˆ˜์— ๋‹ค์‹œ ์“ฐ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์„ ๋ช…์‹œ์ ์œผ๋กœ ์ „๋‹ฌํ•˜๋ฉด ์š”์†Œ ๋ณ€๊ฒฝ์ด ํ˜ธ์ถœ์ž์—๊ฒŒ ๋ณด์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ParamArray๋กœ ์ „๋‹ฌํ•ด๋„ ์ค‘์ฒฉ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • ์˜๋„๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋„๋ก ByRef์™€ ByVal์„ ๋ช…์‹œํ•˜์„ธ์š”. ์ด ๊ทœ์น™์€ ์Šคํฌ๋ฆฝํŠธ์—์„œ ์‚ฌ์šฉ์ž ํ”„๋กœ์‹œ์ €๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ ์ ์šฉ๋˜๋ฉฐ ๋‚ด์žฅ ๋ช…๋ น ์ธ์ˆ˜๋Š” ๊ฐ ๋ฌธ์„œ์— ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
  • ParamArray๋Š” ์ด๋ฆ„์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„ ์žˆ๋Š” ํ˜ธ์ถœ์—์„œ๋Š” ๋น„์›Œ ๋‘˜ ์ˆ˜ ์žˆ์ง€๋งŒ ์š”์†Œ๋ฅผ ์ „๋‹ฌํ•˜๋ ค๋ฉด ๋ชจ๋‘ ์œ„์น˜ ์ธ์ˆ˜๋กœ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‰ผํ‘œ ์‚ฌ์ด ๋นˆ ์ž๋ฆฌ๋Š” ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์ง‘ํ•ฉ์€ ์œ„์น˜ ์ธ์ˆ˜ ์šฐ์„ ์ด๋ฉฐ ์ตœ์‹  VB.NET์˜ ์ž์œ  ํ˜ผํ•ฉ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์Šค๋ ˆ๋“œ๋‚˜ ๊ฒŒ์ž„ ์ง€์—ฐ์„ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ๋ณ€์ˆ˜ ๋ณ€๊ฒฝ

# Adjust๋Š” amount=5๋ฅผ ByRef๋กœ, increment=3์„ ByVal๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. amount๊ฐ€ 8์ด ๋˜์–ด ๋‹ค์‹œ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. Main์€ Integer 8์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  Adjust๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Option Explicit On
Sub Adjust(ByRef amount, ByVal increment)
    amount += increment
End Sub
Sub Main()
    Var amount = 5
    Adjust(amount, 3)
    Return amount
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

Adjust๋Š” amount=5๋ฅผ ByRef๋กœ, increment=3์„ ByVal๋กœ ๋ฐ›์Šต๋‹ˆ๋‹ค. amount๊ฐ€ 8์ด ๋˜์–ด ๋‹ค์‹œ ๊ธฐ๋ก๋ฉ๋‹ˆ๋‹ค. Main์€ Integer 8์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  Adjust๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

2. ์ƒ๋žตํ•œ ๋ฐฐ์ˆ˜์™€ ๋ช…์‹œํ•œ ๋ฐฐ์ˆ˜

# Scale(3)์€ factor=2๋กœ 6์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  Scale(3,4)๋Š” 4๋กœ 12๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ 6*100+12, Integer 612๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function Scale(ByVal value, Optional ByVal factor = 2)
    Return value * factor
End Function
Sub Main()
    Return Scale(3) * 100 + Scale(3, 4)
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

Scale(3)์€ factor=2๋กœ 6์„ ๋ฐ˜ํ™˜ํ•˜๊ณ  Scale(3,4)๋Š” 4๋กœ 12๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. Main์€ 6*100+12, Integer 612๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3. ๋น„์–ด ์žˆ๊ฑฐ๋‚˜ ์ฑ„์›Œ์ง„ ์ธ์ˆ˜

# Sum()์€ ๋นˆ ๋ฐฐ์—ด๋กœ 0์„, Sum(2,3,4)๋Š” ์„ธ ๊ฐ’์œผ๋กœ 9๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. For Each๊ฐ€ ๊ฐ ๊ฐ’์„ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค. Main์€ Integer 9๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
Function Sum(ParamArray values())
    Var total = 0
    For Each value In values
        total += value
    Next
    Return total
End Function
Sub Main()
    Return Sum() + Sum(2, 3, 4)
End Sub

๋งค๊ฐœ๋ณ€์ˆ˜ ๋ฐ ์‹คํ–‰ ์„ค๋ช…:

Sum()์€ ๋นˆ ๋ฐฐ์—ด๋กœ 0์„, Sum(2,3,4)๋Š” ์„ธ ๊ฐ’์œผ๋กœ 9๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. For Each๊ฐ€ ๊ฐ ๊ฐ’์„ ๋ฐฉ๋ฌธํ•ฉ๋‹ˆ๋‹ค. Main์€ Integer 9๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


en ยท ru ยท uk ยท fr ยท de ยท it ยท es ยท zh-tw ยท ja ยท ko

Basic