クラス(その1)



単純なクラス

クラス名最初の一文字目は必ず大文字


// CLASS
// クラス名最初の一文字目は必ず大文字
class User{
    let name: String
    var age: Int
    init(){
        self.name = "me"
        self.age = 30
    }
}
let user = User()   //----- クラスのインスタンス化
print(user.name)    //----- me
print(user.age)     //----- 30
user.age = 25
print(user.age)     //----- 25    
            

イニシャライザの実装


// イニシャライザの実装(複数実装可能)
class User1{
    let name: String
    var age: Int
    init(_ name: String, _ score: Int){
        self.name = name
        self.age = score
    }
    init(){
        self.name = "me"
        self.age = 30
    }
}
let user1 = User1("taro", 24)
print(user1.name)       //----- taro
print(user1.age)        //----- 24
let user2 = User1()
print(user2.name)       //----- me
print(user2.age)        //----- 30    
            

計算プロパティの実装


// 計算プロパティの実装
class User3{
    let name: String
    var age: Int
    // 計算プロパティ
    var generation: Int{
        get {
            if (self.age % 10) < 5 {
                return Int(self.age / 10 * 10)
                
            } else {
                return Int(self.age / 10 * 10 + 10)
            }
        }
        set{
            if newValue >= 0 {
                age = newValue
            }
        }
    }
    init(_ name: String, _ age: Int){
        self.name = name
        self.age = age
    }
    init(){
        self.name = "me"
        self.age = 30
    }
}
let user3 = User3("morita", 32) 
print(user3.generation)         //------ 30
user3.generation = 19           
print(user3.age)                //------ 19
print(user3.generation)         //------ 20