Method dan self
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Swift di Coddy. Pelajaran 3 dari 57.
Di dalam method, self adalah instance tempat method dipanggil. self.count dan count merujuk pada property yang sama, jadi self biasanya dihilangkan:
class Counter {
var count = 0
func increment() {
self.count += 1
}
}
let c = Counter()
c.increment()
print(c.count)Output:
1self diperlukan ketika sebuah parameter memiliki nama yang sama dengan property. Nama tanpa awalan berarti parameter, sedangkan self.name berarti property:
class Player {
var name = "unknown"
func rename(name: String) {
self.name = name
}
}
let p = Player()
p.rename(name: "Ada")
print(p.name)Output:
Adamethod dapat memanggil method lain dari instance yang sama, sehingga setiap method tetap kecil:
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)Output:
10Sebuah method juga dapat mengembalikan nilai yang dihitung dari property. Di sini, isEmpty() menjawab pertanyaan tentang instance tanpa mengubahnya:
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())Output:
true
falseTantangan
MudahLengkapi class Thermostat. setTarget(target:) menyimpan parameter di property target (gunakan self), warmer() menaikkan target sebanyak 1, dan display() mengembalikan target: 21.
Kode yang disediakan membaca target awal dan daftar perintah (warmer atau set <n>), menerapkannya, lalu mencetak display() di akhir.
Kodemu ditulis di Thermostat.swift. main.swift berisi kode input/output yang disediakan dan tidak dapat diedit.
Coba sendiri
// Kode input/output yang disediakan: biarkan apa adanya
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())
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Class dan Object
Bekerja dengan FileMendefinisikan ClassMethod dan selfInitializerClass adalah ReferensiUlasan: Kartu Perpustakaan4Enkapsulasi
Kontrol AksesHanya Bisa Dibaca dari LuarMelindungi StateInitializer yang Bisa GagalRangkuman: Rekening Bank7Polimorfisme dan Generik
PolimorfismeKonversi TipeFungsi GenerikTipe GenerikRangkuman: Kalkulator Bentuk2Struct dan Tipe Nilai
StructSemantik NilaiMethod yang Mengubah NilaiStruct atau classRangkuman, Item Inventaris11Proyek: Manajemen Perpustakaan
Buku dan AnggotaPeminjaman BukuLatihan sendiri: Playground Swift