ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

๋ฐ˜์‘ํ˜•

ios-og


๐Ÿง‘๐Ÿปโ€๐Ÿ’ป ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค์˜ Print ๋ฉ”์†Œ๋“œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ณ€๊ฒฝํ•˜๊ธฐ


  • ์Šค์œ„ํ”„ํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ฑ…์„ ๋ณต์Šตํ•˜๋ฉฐ ๋ฌด์‹ฌ์ฝ” ๋„˜์–ด๊ฐ”๋˜ ๋ถ€๋ถ„ ์ค‘ ๊ถ๊ธˆํ•œ ๊ฒƒ์ด ์ƒ๊ฒจ ํ…Œ์ŠคํŠธ๋ฅผ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์•„๋ž˜๋Š” ์ฑ…์— ๋‚˜์˜ค๋Š” print ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ์„ค๋ช…์ž…๋‹ˆ๋‹ค.

    ...

    "print() ํ•จ์ˆ˜๋Š” ์ถœ๋ ฅํ•˜๋ ค๋Š” ์ธ์Šคํ„ด์Šค์˜ description ํ”„๋กœํผํ‹ฐ์— ํ•ด๋‹นํ•˜๋Š” ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•ด์ฃผ๊ณ , dump() ํ•จ์ˆ˜๋Š” ์ถœ๋ ฅํ•˜๋ ค๋Š” ์ธ์Šคํ„ด์Šค์˜ ์ž์„ธํ•œ ๋‚ด๋ถ€ ์ฝ˜ํ…์ธ ๊นŒ์ง€ ์ถœ๋ ฅํ•ด์ค๋‹ˆ๋‹ค."

    ...

    ์ด ๊ตฌ์ ˆ์—์„œ ํ˜น์‹œ ์–ด๋–ค ์ธ์Šคํ„ด์Šค๊ฐ€ description์ด๋ž€ ์ด๋ฆ„์˜ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๊ฒŒ๋˜๋ฉด ๋ฌด์กฐ๊ฑด ๊ทธ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋Š” ์ง€ ๊ถ๊ธˆํ•ด์ ธ ์‹คํ—˜์„ ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. ์šฐ์„  ์•„๋ž˜๋Š” ํ…Œ์ŠคํŠธ๋ฅผ ์œ„ํ•œ ํด๋ž˜์Šค์™€ ๊ทธ ์ธ์Šคํ„ด์Šค๋ฅผ ์ถœ๋ ฅํ–ˆ์„ ๋•Œ ์ผ๋ฐ˜์ ์ธ ๊ฒฐ๊ณผ๋ฌผ ์ž…๋‹ˆ๋‹ค.


    class Car {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    }
    
    let bmw = Car(name: "bmw")
    let audi = Car(name: "Audi")
    
    print(bmw) // PrintMethod.Car
    print(audi) // PrintMethod.Car

    print ๋ฉ”์†Œ๋“œ์˜ ๊ฒฐ๊ณผ๋ฌผ์ด ๋‹จ์ˆœํžˆ Car ์ธ์Šคํ„ด์Šค์ž„์„ ํ‘œํ˜„ํ•ด์ฃผ๊ธฐ ๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค๊ฐ„ ๊ตฌ๋ณ„์ด ์•ˆ๋  ๋ฟ๋งŒ์•„๋‹ˆ๋ผ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ถฉ๋ถ„ํžˆ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋•Œ dump๋ฅผ ํ•˜๋ฉด ์ •๋ณด๊ฐ€ ์ž์„ธํžˆ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค.


    dump(bmw)
    //โ–ฟ PrintMethod.Car #0
    //  - name: "bmw"
    dump(audi)
    // โ–ฟ PrintMethod.Car #0
    //  - name: "Audi"

    ์ด์ œ ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ description์„ ํ…Œ์ŠคํŠธํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.


  • Car ํด๋ž˜์Šค ๋‚ด๋ถ€์— description์ด๋ผ๋Š” ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค.


    class Car {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    
        var description: String {
            return self.name
        }
    }
    
    let bmw = Car(name: "bmw")
    print(bmw) // PrintMethod.Car

    description ํ”„๋กœํผํ‹ฐ๋ฅผ ์ƒ์„ฑํ•ด์ฃผ์—ˆ์ง€๋งŒ ์ถœ๋ ฅ ๊ฒฐ๊ณผ๋ฌผ์—๋Š” ๋ณ€ํ™”๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์„ค๋ช…์„ ์œ„ํ•œ ํ‘œํ˜„์œผ๋กœ description์ด๋ž€ ํ‘œํ˜„์„ ํ•œ ๊ฒƒ์ธ์ง€ ๊ถ๊ธˆํ•ด์„œ ๊ณต์‹๋ฌธ์„œ์—์„œ String์„ ๊ฒ€์ƒ‰ํ–ˆ์Šต๋‹ˆ๋‹ค.



    String์€ description์ด๋ž€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ณ , ์ด description์˜ ์„ค๋ช…์„ ๋” ์ฝ์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.



    ์„ค๋ช…์€ ํŠน๋ณ„ํ•  ๊ฒƒ์ด ์—†์ง€๋งŒ ๊ฐ€์žฅ ์•„๋ž˜์ชฝ์— ๋ณด๋ฉด CustomStringConvertible์„ ์ฑ„ํƒํ•˜๋Š” ๊ณผ์ •์—์„œ ์ƒ์„ฑ๋˜๋Š” ํ”„๋กœํผํ‹ฐ์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ CustomStringConvertible์„ ๋ณด๋ฉด



    ์œ„์˜ ํ”„๋กœํ† ์ฝœ์„ ์ฑ„ํƒํ•œ ํƒ€์ž…์€ ์ธ์Šคํ„ด์Šค๊ฐ€ string์œผ๋กœ ๋ณ€ํ™˜๋  ๋•Œ ์ธ์Šคํ„ด์Šค ์ž์‹ ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” representation์„ ์ œ๊ณตํ•œ๋‹ค๊ณ  ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒ์„ฑ๋œ ํƒ€์ž…์— ๋‹จ์ˆœํžˆ description ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ CustomStringConvertable์„ ์ฑ„ํƒํ•œ ํ›„ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.


    class Car: CustomStringConvertible {
        let name: String
    
        init(name: String) {
            self.name = name
        }
    
        var description: String {
            return self.name
        }
    }
    
    let bmw = Car(name: "bmw i8")
    let audi = Car(name: "audi a7")
    print(bmw) // bmw i8
    print(audi) // audi a7

๐Ÿ“ Sum Up


  • ์ •๋ฆฌํ•˜๋ฉด, print ๋ฉ”์†Œ๋“œ๋Š” ์–ด๋–ค ์ธ์Šคํ„ด์Šค์˜ description ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๊ฒƒ์ด ๋งž์ง€๋งŒ ๋‹จ์ˆœํžˆ description์ด๋ž€ ์ด๋ฆ„์˜ ํ”„๋กœํผํ‹ฐ๋งŒ์œผ๋กœ๋Š” ๋™์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ํƒ€์ž…์ด CustomStringConvertible์„ ์ฑ„ํƒํ•˜๊ณ , ๊ทธ ํ”„๋กœํ† ์ฝœ์ด ๊ฐ€์ง„ description์ด๋ž€ ํ”„๋กœํผํ‹ฐ๋ฅผ ๊ตฌํ˜„ํ•œ ์ƒํƒœ์—์„œ print ๋ฉ”์†Œ๋“œ๊ฐ€ ๊ทธ description ํ”„๋กœํผํ‹ฐ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

Ref

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€
๋ฐ˜์‘ํ˜•
๊ณต์ง€์‚ฌํ•ญ
์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
์ตœ๊ทผ์— ๋‹ฌ๋ฆฐ ๋Œ“๊ธ€
Total
Today
Yesterday
๋งํฌ
TAG more
ยซ   2024/07   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
๊ธ€ ๋ณด๊ด€ํ•จ