Metotlar ve self
Coddy'nin Swift Journey'sinin Nesne Yönelimli Programlama bölümünün bir parçası. Ders 3 / 57.
Bir metodun içinde self, metodun çağrıldığı örnektir. self.count ve count aynı özelliği ifade eder; bu nedenle self genellikle yazılmaz:
class Counter {
var count = 0
func increment() {
self.count += 1
}
}
let c = Counter()
c.increment()
print(c.count)Çıktı:
1self, bir parametrenin bir özellik ile aynı ada sahip olduğu durumlarda gereklidir. Bu durumda yalın ad parametreyi, self.name ise özelliği ifade eder:
class Player {
var name = "unknown"
func rename(name: String) {
self.name = name
}
}
let p = Player()
p.rename(name: "Ada")
print(p.name)Çıktı:
AdaYöntemler aynı örneğin diğer yöntemlerini çağırabilir; bu, her yöntemin küçük kalmasını sağlar:
class Cart {
var total = 0
func add(_ price: Int) {
total += price
}
func addTwice(_ price: Int) {
add(price)
add(price)
}
}
let cart = Cart()
cart.addTwice(5)
print(cart.total)Çıktı:
10Bir yöntem, özelliklerden hesaplanan bir değer de döndürebilir. Burada isEmpty(), örneği değiştirmeden onun hakkında bir soruyu yanıtlar:
class Cart {
var items: [String] = []
func add(_ item: String) {
items.append(item)
}
func isEmpty() -> Bool {
items.count == 0
}
}
let cart = Cart()
print(cart.isEmpty())
cart.add("tea")
print(cart.isEmpty())Çıktı:
true
falseGörev
KolayThermostat sınıfını tamamla. setTarget(target:) parametreyi target özelliğinde saklar (self kullan), warmer() hedefi 1 artırır ve display() target: 21 döndürür.
Sağlanan kod, başlangıç hedefini ve bir komut listesi (warmer veya set <n>) okur, bunları uygular ve sonunda display() çıktısını yazdırır.
Kodun Thermostat.swift içinde olmalı. 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 t = Thermostat()
t.setTarget(target: Int(input[0])!)
for cmd in input.dropFirst() {
if cmd == "warmer" { t.warmer() } else { t.setTarget(target: Int(cmd.dropFirst(4))!) }
}
print(t.display())
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