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 30Bir 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.0Görev
KolayAccount 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())
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
1Sınıflar ve Nesneler
Dosyalarla ÇalışmaSınıfları TanımlamaMetotlar ve selfBaşlatıcılarSınıflar ReferanstırTekrar - Kütüphane Kartı4Kapsülleme
Erişim DenetimiDışarıdan Salt OkunurDurumu KorumaBaşarısız Olabilen BaşlatıcılarTekrar - Banka Hesabı7Polimorfizm ve Generic'ler
PolimorfizmTür DönüşümüGeneric FonksiyonlarGeneric TürlerTekrar - Şekil Hesaplayıcı2Struct Yapıları ve Değer Türleri
Struct YapılarıDeğer SemantiğiDeğiştirici MetotlarStruct mı Class mıTekrar - Envanter Öğesi5Kalıtım
Alt sınıflarMetotları Geçersiz KılmaBaşlatıcılar ve superfinal ve HiyerarşilerTekrar - Çalışan Hiyerarşisi11Proje: Kütüphane Yönetimi
Kitaplar ve ÜyelerKitap Ödünç AlmaKendi başına pratik yap: Swift playground