glowing713
Frontend-Deep-Dive
glowing713
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (97)
    • Languages (11)
      • JavaScript ๐Ÿ’› (3)
      • Python ๐Ÿ (4)
      • Java โ˜•๏ธ (3)
      • Swift ๐Ÿงก (1)
    • Computer_Science (1)
      • Computer_Network ๐Ÿ•ธ (1)
    • Web_Frontend (4)
      • Vue.js (1)
    • Problem_Solving (76)
    • Server (1)
      • Spring ๐Ÿ€ (1)
    • AI (2)
      • NLP ๐Ÿ—ฃ (1)
      • AI_Math โž— (1)
    • ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊พธ๋ฏธ๊ธฐ โœŒ (1)
    • ์ƒ๊ฐ์ •๋ฆฌ โœ๐Ÿป (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿง‘๐Ÿปโ€๐Ÿ’ปGithub

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Baekjoon
  • Stack
  • Algorithm
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ์ด๋ถ„ํƒ์ƒ‰
  • ์™„์ „ํƒ์ƒ‰
  • ps
  • brute-force
  • 2019 ์นด์นด์˜ค ๊ฐœ๋ฐœ์ž ๊ฒจ์šธ ์ธํ„ด์‹ญ
  • bfs
  • DP
  • Python
  • boostcampaitech
  • ์นด์นด์˜ค ๊ธฐ์ถœ
  • Java
  • mst
  • binary search
  • BOJ
  • c++
  • ๋™์ ๊ณ„ํš๋ฒ•

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
glowing713

Frontend-Deep-Dive

[Swift] ์Šค์œ„ํ”„ํŠธ Class vs Struct
Languages/Swift ๐Ÿงก

[Swift] ์Šค์œ„ํ”„ํŠธ Class vs Struct

2020. 7. 22. 18:35

๐Ÿค” 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๋Š” ๋™์ผํ•˜๊ฒŒ ์œ ์ง€๋˜๋Š” ๊ฒƒ์ด๋‹ค.

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)
    glowing713
    glowing713

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”