ぜのぜ

しりとりしようぜのぜのぜのぜ

50日目 (!!

日記

オリンピックのロードレースを見てテンション上がったので今日から夜練を始めてみた.俺は脳死でコツコツやってればある程度成長できるやろという感じで生きてきたので今回もそんな感じで成長したい.が,洗濯と風呂が結構なコストである.

そういえばこの習慣も今日で50日目らしい.いくつかは知らなかったことを知れたのでやって悪くはなかったと思う.

今日書いたコード

class Food: CustomStringConvertible {
    var name: String
    var description: String {
        "name: \(name)"
    }

    init(name: String) {
        self.name = name
    }
    convenience init() {
        self.init(name: "[Unnamed]")
    }
}

print(Food(name: "Banana"))
print(Food())

class RecipeIngredient: Food {
    var quantity: Int
    override var description: String {
        super.description + ", quantity: \(quantity)"
    }

    init(name: String, quantity: Int) {
        self.quantity = quantity
        super.init(name: name)
    }
    override convenience init(name: String) {
        self.init(name: name, quantity: 1)
    }
}

// サブクラス独自のDesignated Initializerを実装しているので自動的には継承されないが,
// スーパークラスのDesignated Initializerを全て実装しているのでConvenience Initializerが継承される
print(RecipeIngredient(name: "Egg", quantity: 12))
print(RecipeIngredient(name: "Apple"))
print(RecipeIngredient())

class ShoppingListItem: RecipeIngredient {
    var purchased = false
    override var description: String {
        super.description + ", purchased: \(purchased)"
    }
}

// サブクラス独自のDesignated Initializerを実装していないので,
// スーパークラスのDesignated InitializerとConvenience Initializerが全て継承される
print(ShoppingListItem(name: "Milk", quantity: 1))
print(ShoppingListItem(name: "Onion"))
print(ShoppingListItem())
name: [Unnamed]
name: Banana
name: Egg, quantity: 12
name: Apple, quantity: 1
name: [Unnamed], quantity: 1
name: Milk, quantity: 1, purchased: false
name: Onion, quantity: 1, purchased: false
name: [Unnamed], quantity: 1, purchased: false

初めて知ったこと

なし.今回は今までの説明の確認回だった.

そういえば技術書典で買ったSwiftイニシャライザ大全(うろ覚え)という本が積んであるのでこの章を読み終わったらその本も読もうと思う.