๐ค Swift์ Class์ Struct๋ฅผ ๋น๊ตํด๋ณด์.
โ๏ธ Class
- Enemy.swift
class Enemy {
var health: Int
var attackStrength: Int
init(health: Int, attackStrength: Int) {
self.health = health
self.attackStrength = attackStrength
}
func takeDamage(amounts: Int) {
self.health -= amounts
}
func move() {
print("Walk forwards.")
}
func attack() {
print("Land a hit, does \(attackStrength) damage.")
}
}
- main.swift
let zombie = Enemy(health: 100, attackStrength: 10)
let mummy = zombie
zombie.takeDamage(amounts: 10)
print(mummy.health)
์ถ๋ ฅ ๊ฒฐ๊ณผ
90
zombie์ health๋ 100, attackStrength๋ 10์ผ๋ก ์ด๊ธฐํ๋์๋ค.
mummy๋ zombie๋ฅผ ๊ทธ๋๋ก ๋ณต์ฌํ์ผ๋ฏ๋ก ์ญ์ health๋ 100, attackStrength๋ 10์ด๋ค.
zombie๋ takeDamage ํจ์๋ฅผ ํตํด์ health๊ฐ 10 ๊ฐ์๋์์ผ๋ mummy๋ ๋ณ๋์ด ์์ผ๋ฏ๋ก
mummy์ health๋ ๊ทธ๋๋ก 100์ด ์ถ๋ ฅ๋ ๊ฒ์ ์์ํ ์ ์๋ค.
๊ทธ๋ฌ๋ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ 90์ผ๋ก zombie์ health์ ๊ฐ์ด 10 ๊ฐ์๋์๋ค.
์๋ํ๋ฉด, Swift์ Class๋ Passed by reference(์ฐธ์กฐ ์ ๋ฌ)๋ก์จ mummy์ zombie๋ฅผ ๋ณต์ฌํ ๋, ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์ ๊ฐ์ด ์ ๋ฌ๋๋ฏ๋ก
zombie๊ฐ ๋ณํ๋ฉด mummy๋ ๋์ผํ๊ฒ ๋ณํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
โ๏ธ Struct
- Enemy.swift
struct Enemy {
var health: Int
var attackStrength: Int
init(health: Int, attackStrength: Int) {
self.health = health
self.attackStrength = attackStrength
}
mutating func takeDamage(amounts: Int) {
self.health -= amounts
}
func move() {
print("Walk forwards.")
}
func attack() {
print("Land a hit, does \(attackStrength) damage.")
}
}
- main.swift
var zombie = Enemy(health: 100, attackStrength: 10)
var mummy = zombie
zombie.takeDamage(amounts: 10)
print(mummy.health)
์ถ๋ ฅ ๊ฒฐ๊ณผ
100
zombie๋ takeDamage ํจ์๋ฅผ ํตํด์ health๊ฐ 10 ๊ฐ์๋์์ผ๋ mummy๋ ๋ณ๋์ด ์์ผ๋ฏ๋ก
mummy์ health๋ ๊ทธ๋๋ก 100์ด ์ถ๋ ฅ์ด ๋๋ค.
์๋ํ๋ฉด, Swift์ Struct๋ Passed by value (๊ฐ ์ ๋ฌ)๋ก์จ mummy์ zombie๋ฅผ ๋ณต์ฌํ ๋, ์ค์ ๊ฐ์ด ๋ณต์ฌ๋๋ฏ๋ก
zombie๊ฐ ๋ณํ์ฌ๋ mummy๋ ๋์ผํ๊ฒ ์ ์ง๋๋ ๊ฒ์ด๋ค.