Menu
Coddy logo textTech

Başlatıcılar

Coddy'nin Swift Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 4 / 57.

Başlatıcı (init olarak yazılır), bir örnek oluşturulduğunda çalışır ve özelliklere başlangıç değerlerini verir. Parametreleri, tür çağrısının bağımsız değişkenleri olur:

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)

Çıktı:

Dune
412

Örnek kullanılmadan önce her özelliğin bir değere sahip olması gerekir. Varsayılan değeri olmayan bir özellik init içinde ayarlanmalıdır; aksi takdirde sınıf derlenmez. let ile bildirilen bir özellik init içinde bir kez ayarlanabilir ve sonrasında bir daha değiştirilemez:

class Book {
    let isbn: String     // yalnızca bir kez, init'te
    var title: String

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

init parametrelerinin varsayılan değerleri olabilir; böylece çağıranlar yalnızca farklı olanları sağlar:

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)")

Çıktı:

egg 300
timer 30

Bir sınıf, her biri farklı parametrelere sahip birden fazla başlatıcıya sahip olabilir. Bir convenience init bazı değerleri doldurur ve ana başlatıcıyı self.init(...) ile çağırır:

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)

Çıktı:

20.0
100.0
challenge icon

Görev

Kolay

Account sınıfının başlatıcısını yazın. owner ve varsayılan değeri 0 olan isteğe bağlı bir balance almalı ve her ikisini de saklamalıdır. Ardından, Ada has 150 döndüren summary() işlevini tamamlayın.

Sağlanan kod bir sahip okur ve ikinci bir satır mevcut olduğunda başlangıç bakiyesini okur. Hesabı bakiye ile veya bakiye olmadan oluşturur ve summary() yazdırır.

Kodunuz Account.swift dosyasına yazılmalıdır. main.swift sağlanan girdi/çıktı kodunu içerir ve düzenlenemez.

Kendin dene

// Sağlanan girdi/çıktı kodu: olduğu gibi bırakın
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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Nesne Yönelimli Programlama bölümündeki tüm dersler

Kendi başına pratik yap: Swift playground