Menu
CoddyTech

Initializer

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 4 dari 57.

Initializer, yang ditulis init, berjalan saat sebuah instance dibuat dan memberikan nilai awal pada property. Parameternya menjadi argumen saat memanggil tipe tersebut:

class Book {
    var title: String
    var pages: Int

    init(title: String, pages: Int) {
        self.title = title
        self.pages = pages
    }
}

let book = Book(title: "Dune", pages: 412)
print(book.title)
print(book.pages)

Output:

Dune
412

Setiap property memerlukan nilai sebelum instance dapat digunakan. Property tanpa nilai default harus diatur di init, atau class tidak dapat dikompilasi. Property yang dideklarasikan dengan let dapat diatur sekali di init dan tidak diubah setelahnya:

class Book {
    let isbn: String     // tetapkan sekali, di init
    var title: String

    init(isbn: String, title: String) {
        self.isbn = isbn
        self.title = title
    }
}

Parameter init bisa memiliki nilai default, jadi pemanggil hanya perlu memberikan nilai yang berbeda:

class Timer {
    var seconds: Int
    var label: String

    init(seconds: Int, label: String = "timer") {
        self.seconds = seconds
        self.label = label
    }
}

let egg = Timer(seconds: 300, label: "egg")
let quick = Timer(seconds: 30)
print("\(egg.label) \(egg.seconds)")
print("\(quick.label) \(quick.seconds)")

Output:

egg 300
timer 30

Sebuah class dapat memiliki lebih dari satu initializer, masing-masing dengan parameter yang berbeda. convenience init mengisi beberapa nilai dan memanggil initializer utama dengan self.init(...):

class Temperature {
    var celsius: Double

    init(celsius: Double) {
        self.celsius = celsius
    }

    convenience init(fahrenheit: Double) {
        self.init(celsius: (fahrenheit - 32) * 5 / 9)
    }
}

print(Temperature(celsius: 20).celsius)
print(Temperature(fahrenheit: 212).celsius)

Output:

20.0
100.0
challenge icon

Tantangan

Mudah

Tulis initializer untuk class Account. Initializer ini menerima owner dan balance opsional yang nilai default-nya 0, lalu menyimpan keduanya. Kemudian lengkapi summary(), yang mengembalikan Ada has 150.

Kode yang disediakan membaca owner dan, jika ada baris kedua, saldo awal. Kode tersebut membuat account dengan atau tanpa saldo, lalu mencetak summary().

Tulis kodemu di Account.swift. main.swift berisi kode input/output yang disediakan dan tidak boleh diedit.

Coba sendiri

// Kode input/output yang disediakan: biarkan apa adanya
var input: [String] = []
while let line = readLine() { input.append(line) }
let account = input.count > 1 ? Account(owner: input[0], balance: Int(input[1])!) : Account(owner: input[0])
print(account.summary())
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Playground Swift