본문 바로가기
Smart Device/Swift

Swift Initialization Parameter

by 언덕너머에 2015. 6. 23.

Initialization Parameter

Initialization은 파라미터가 필요없다. 그러나 초기화를 할때 파라미터로 넘긴 값을 사용하여 초기화할 필요가 있다.

이런 경우에 사용하는 방법이 Initialization 파라미터 이다.


struct Grade {

    var koreanGrade : Int

    var englishGrade : Int

    

    init(fromKoreanCount koreanCount :Int, fromEnglishCount englishCount : Int) {

        koreanGrade = min(koreanCount * 5, 100)

        englishGrade = min(englishCount * 5, 100)

    }

    

    init(fromKoreanScore koreanScore : Int, fromEnglishScore englishScore : Int) {

        koreanGrade = koreanScore

        englishGrade = englishScore

    }

}


let myGrade = Grade(fromKoreanCount: 15, fromEnglishCount: 17)

println(" 국어점수는 \(myGrade.koreanGrade)이고, 영어점수는 \(myGrade.englishGrade)이다")


let yourGrade = Grade(fromKoreanScore: 95, fromEnglishScore: 100)

println(" 국어점수는 \(yourGrade.koreanGrade)이고, 영어점수는 \(yourGrade.englishGrade)이다.")


--> " 국어점수는 75이고, 영어점수는 85이다"

--> " 국어점수는 95이고, 영어점수는 100이다."


구조체 Grade는 두 개의 Initialization을 갖고 있다. 두 개의Initialization을 구분할 수 있는 것은 파라미터의 이름들이

다르기 때문이다.


위 예제의 Initialization은 외부이름(external name)을 사용하여 이니셜라이즈를 사용했지만 다음과 같이 생략할 수도

있고, 해시심볼(#)을 사용해서 표시할 수도 있다.


생략

struct Grade {

    var koreanGrade : Int

    var englishGrade : Int

    

    init(koreanCount :Int, englishCount : Int) {

        koreanGrade = min(koreanCount * 5100)

        englishGrade = min(englishCount * 5100)

    }

    

    init(koreanScore : Int, englishScore : Int) {

        koreanGrade = koreanScore

        englishGrade = englishScore

    }

}


let myGrade = Grade(koreanCount: 15, englishCount: 17)

println(" 국어점수는 \(myGrade.koreanGrade)이고영어점수는 \(myGrade.englishGrade)이다")


let yourGrade = Grade(koreanScore: 95, englishScore: 100)

println(" 국어점수는 \(yourGrade.koreanGrade)이고영어점수는 \(yourGrade.englishGrade)이다.")


해시심볼(#)

struct Grade {

    var koreanGrade : Int

    var englishGrade : Int

    

    init(#koreanCount :Int, #englishCount : Int) {

        koreanGrade = min(koreanCount * 5100)

        englishGrade = min(englishCount * 5100)

    }

    

    init(#koreanScore : Int, #englishScore : Int) {

        koreanGrade = koreanScore

        englishGrade = englishScore

    }

}


let myGrade = Grade(koreanCount: 15, englishCount: 17)

println(" 국어점수는 \(myGrade.koreanGrade)이고영어점수는 \(myGrade.englishGrade)이다")


let yourGrade = Grade(koreanScore: 95, englishScore: 100)

println(" 국어점수는 \(yourGrade.koreanGrade)이고영어점수는 \(yourGrade.englishGrade)이다.")


'Smart Device > Swift' 카테고리의 다른 글

Swift Playground에서 console output 보여주기  (0) 2015.06.23
Swift Initialization Optional  (0) 2015.06.23
Swift 상속(Inheritance)  (0) 2015.06.22
Swift Property Observer  (0) 2015.06.09
Swift mutating  (0) 2015.06.09