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

+= / -= / *= / /= / &=

ClassicUO โ€ข Basic

+=, -=, *=, /=๋กœ ๊ธฐ์กด ๋ณ€์ˆ˜๋‚˜ ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค. ํ˜„์žฌ ๊ฐ’์„ ์ฝ๊ณ  ๊ณ„์‚ฐํ•˜์—ฌ ๋‹ค์‹œ ์“ฐ๋ฉฐ ๋Œ€์ƒ์„ ๋‘ ๋ฒˆ ํ‰๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

target += value
target -= value
target *= value
target /= value
target &= value

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

  • target โ€” target: ๊ธฐ์กด ์Šค์นผ๋ผ ์ด๋ฆ„ ๋˜๋Š” items[index], grid[x][y] ๊ฐ™์€ ์š”์†Œ์ž…๋‹ˆ๋‹ค. ์š”์†Œ๋Š” ์ดˆ๊ธฐํ™”๋˜์–ด์•ผ ํ•˜๋ฉฐ 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์œ ํšจํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • operator โ€” +=์™€ &=๋Š” ์ˆซ์ž๋ฅผ ๋”ํ•˜๊ฑฐ๋‚˜ ๋‘ String์„ ์—ฐ๊ฒฐํ•˜๋ฉฐ -=๋Š” ๋นผ๊ธฐ, *=๋Š” ๊ณฑํ•˜๊ธฐ, /=๋Š” ๋‚˜๋ˆ„๊ธฐ์ž…๋‹ˆ๋‹ค. ์ „์ฒ˜๋ฆฌ๊ธฐ๊ฐ€ &=๋ฅผ +=๋กœ ๋ฐ”๊พธ๋ฏ€๋กœ 5 &= 3์€ 8์„ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. String๊ณผ ์ˆซ์ž์—๋Š” ๋ช…์‹œ์ ์ธ CStr์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์ž๋ฅผ ํ•˜๋‚˜์˜ ํ† ํฐ์œผ๋กœ ์“ฐ์„ธ์š”.
  • value โ€” value: ๋Œ€์ƒ๊ณผ ์ธ๋ฑ์Šค ๋’ค์— ํ•œ ๋ฒˆ ๊ณ„์‚ฐํ•  ์‹์ž…๋‹ˆ๋‹ค. ์ข…๋ฅ˜๊ฐ€ ์—ฐ์‚ฐ์— ๋งž์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž๋ฅผ String์— ์ถ”๊ฐ€ํ•˜๊ธฐ ์ „์— CStr๋กœ ๋ณ€ํ™˜ํ•˜์„ธ์š”.

๋ฐ˜ํ™˜๊ฐ’

๊ฐ’ ์—†์Œ(Unit)์ž…๋‹ˆ๋‹ค. ๋ฌธ์ด๋ฉฐ ์‹์ด๋‚˜ ์„ฑ๊ณต ํ”Œ๋ž˜๊ทธ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค. ๋‹ค์Œ ์ค„์—์„œ target์„ ์ฝ์–ด ์ €์žฅ ๊ฒฐ๊ณผ๋ฅผ ์–ป์œผ์„ธ์š”. ์Šค์นผ๋ผ ์“ฐ๊ธฐ์—๋Š” AS๊ฐ€ ์ ์šฉ๋˜์–ด Integer 5๋ฅผ /=2 ํ•˜๋ฉด Integer 2, ํ˜•์‹ ๋ฏธ์ง€์ • ์ˆซ์ž ๋ณ€์ˆ˜๋Š” Decimal 2.5๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

๋™์ž‘

  • ๊ฐ ๋ฐฐ์—ด ์ฐธ์กฐ๋ฅผ ์ธ๋ฑ์Šค ๊ณ„์‚ฐ ์ „์— ๋ณด๊ด€ํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋Š” ์™ผ์ชฝ๋ถ€ํ„ฐ ํ•œ ๋ฒˆ์”ฉ ์‹คํ–‰ํ•˜๊ณ  ๋ฒ”์œ„๋Š” ์˜ค๋ฅธ์ชฝ ํ”ผ์—ฐ์‚ฐ์ž ์ „์— ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ์ธ๋ฑ์Šค๋‚˜ ์˜ค๋ฅธ์ชฝ ByRef ํ•จ์ˆ˜๊ฐ€ ๋ฐฐ์—ด ๋ณ€์ˆ˜๋‚˜ ๋ถ€๋ชจ ์š”์†Œ๋ฅผ ๊ต์ฒดํ•ด๋„ ์ด๋ฏธ ์„ ํƒํ•œ ์นธ์— ์”๋‹ˆ๋‹ค.
  • +, -, *, /์™€ ๊ฐ™์€ ๊ทœ์น™์ž…๋‹ˆ๋‹ค. ์ •์ˆ˜๋Š” ๋ถ€ํ˜ธ ์žˆ๋Š” 32๋น„ํŠธ๋กœ ์˜ค๋ฒ„ํ”Œ๋กœํ•˜๊ณ  /๋Š” Decimal์ด๋ฉฐ ๋ถ€๋™์†Œ์ˆ˜์  0 ๋‚˜๋ˆ—์…ˆ์€ Infinity/NaN์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. String๊ณผ ์ˆซ์ž ๋ง์…ˆ์€ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์š”์†Œ์—๋Š” ์Šค์นผ๋ผ AS ๋ณ€ํ™˜์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ๋ฏธ์„ ์–ธ ๋Œ€์ƒ, ๋ฏธ์ดˆ๊ธฐํ™” ์š”์†Œ, ์ž˜๋ชป๋œ ์ธ๋ฑ์Šค, ํ˜ธํ™˜๋˜์ง€ ์•Š๋Š” ์—ฐ์‚ฐ, CONST ์“ฐ๊ธฐ, ๋ณ€ํ™˜ ์‹คํŒจ๋Š” ์žก์„ ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค. ์ตœ์ข… ์“ฐ๊ธฐ๋Š” ํ•˜์ง€ ์•Š์ง€๋งŒ ํ”ผ์—ฐ์‚ฐ์ž ํ•จ์ˆ˜๊ฐ€ ์ด๋ฏธ ์ผ์œผํ‚จ ๋ถ€์ˆ˜ ํšจ๊ณผ๋Š” ๋˜๋Œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. CONST์™€ AS๋Š” ์˜ค๋ฅธ์ชฝ์ด ์‹คํ–‰๋œ ํ›„ ์Šค์นผ๋ผ๋ฅผ ์“ธ ๋•Œ ๊ฒ€์‚ฌํ•ฉ๋‹ˆ๋‹ค.
  • Option Explicit์€ ์‹คํ–‰ ์ „์— ์ด๋ฆ„์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋””๋ฒ„๊ฑฐ๋Š” ์›๋ณธ ์ค„ ๋ฒˆํ˜ธ๋ฅผ ์“ฐ๊ณ  ๋ฐ”์œ ๋ฃจํ”„๋„ ์ผ์‹œ ์ •์ง€์™€ ์ •์ง€ ๊ฒ€์‚ฌ๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ์ฝ๊ธฐ, ๊ณ„์‚ฐ, ์“ฐ๊ธฐ๋Š” ๋™์‹œ ํ”„๋กœ์‹œ์ € ์‚ฌ์ด์˜ ์›์ž์  ๋™๊ธฐํ™” ์—ฐ์‚ฐ์ด ์•„๋‹™๋‹ˆ๋‹ค.

์˜ˆ์ œ

1. ๋„ค ๊ฐ€์ง€ ์—ฐ์‚ฐ

# amount๋Š” 10์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. +=2๋Š” 12, -=3์€ 9, *=4๋Š” 36, /=2๋Š” Decimal 18์ž…๋‹ˆ๋‹ค. Main์€ ์ €์žฅ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋Œ€์ž…๋ฌธ ์ž์ฒด๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
Option Explicit On
SUB Main()
    VAR amount = 10
    amount += 2
    amount -= 3
    amount *= 4
    amount /= 2
    RETURN amount
END SUB

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

amount๋Š” 10์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. +=2๋Š” 12, -=3์€ 9, *=4๋Š” 36, /=2๋Š” Decimal 18์ž…๋‹ˆ๋‹ค. Main์€ ์ €์žฅ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋ฉฐ ๋Œ€์ž…๋ฌธ ์ž์ฒด๋Š” ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2. ์ธ๋ฑ์Šค๋ฅผ ํ•œ ๋ฒˆ ๊ณ„์‚ฐ

# NextIndex๋Š” ByRef ๋งค๊ฐœ๋ณ€์ˆ˜ calls๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. items[0]์€ 5์—์„œ +=2๋กœ 7์ด ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ์€ ํ•œ ๋ฒˆ์ด๋ฏ€๋กœ calls=1์ž…๋‹ˆ๋‹ค. Main์€ items[0]*10+calls=71์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์กฐ ํ•จ์ˆ˜ ์ „์ฒด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.
Option Explicit On
FUNCTION NextIndex(ByRef calls)
    calls += 1
    RETURN 0
END FUNCTION
SUB Main()
    DIM items[0]
    items[0] = 5
    VAR calls = 0
    items[NextIndex(calls)] += 2
    RETURN items[0] * 10 + calls
END SUB

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

NextIndex๋Š” ByRef ๋งค๊ฐœ๋ณ€์ˆ˜ calls๋ฅผ ์ฆ๊ฐ€์‹œํ‚ค๊ณ  0์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. items[0]์€ 5์—์„œ +=2๋กœ 7์ด ๋ฉ๋‹ˆ๋‹ค. ํ˜ธ์ถœ์€ ํ•œ ๋ฒˆ์ด๋ฏ€๋กœ calls=1์ž…๋‹ˆ๋‹ค. Main์€ items[0]*10+calls=71์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋ณด์กฐ ํ•จ์ˆ˜ ์ „์ฒด๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

3. ์ƒ์ˆ˜ ๋ณดํ˜ธ ์ฒ˜๋ฆฌ

# limit๋Š” CONST 5์ž…๋‹ˆ๋‹ค. limit+=1์€ ์“ธ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ณ  CATCH๋Š” problem์— ์ €์žฅํ•˜๋ฉฐ caught=TRUE๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. limit๋Š” 5๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Main์€ ๋ช…์‹œ์  CStr๋กœ "5:1"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ๋Š” ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ์ด์ง€ ๋Œ€์ž… ๋ฐ˜ํ™˜๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์—์„œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. report=CStr(limit) ๋‹ค์Œ report &= ":"์™€ report &= CStr(caught)๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ &=๋Š” report๋ฅผ ๊ฐฑ์‹ ํ•˜๊ณ  Return report๋Š” "5:1"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
Option Explicit On
SUB Main()
    CONST limit = 5
    VAR caught = FALSE
    TRY
        limit += 1
    CATCH problem
        caught = TRUE
    END TRY
    VAR report = CStr(limit)
    report &= ":"
    report &= CStr(caught)
    RETURN report
END SUB

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

limit๋Š” CONST 5์ž…๋‹ˆ๋‹ค. limit+=1์€ ์“ธ ๋•Œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜๊ณ  CATCH๋Š” problem์— ์ €์žฅํ•˜๋ฉฐ caught=TRUE๋กœ ๋งŒ๋“ญ๋‹ˆ๋‹ค. limit๋Š” 5๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. Main์€ ๋ช…์‹œ์  CStr๋กœ "5:1"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋ž˜๊ทธ๋Š” ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ ๊ฒฐ๊ณผ์ด์ง€ ๋Œ€์ž… ๋ฐ˜ํ™˜๊ฐ’์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋ณ€์ˆ˜์—์„œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. report=CStr(limit) ๋‹ค์Œ report &= ":"์™€ report &= CStr(caught)๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ &=๋Š” report๋ฅผ ๊ฐฑ์‹ ํ•˜๊ณ  Return report๋Š” "5:1"์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.


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

Basic