Menu
CoddyTech

Anggota Statis

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

Property static dimiliki oleh tipe itu sendiri, bukan oleh instance mana pun. Hanya ada satu salinan, yang diakses melalui nama tipe:

struct Temperature {
    static let freezing = 0.0
    static let boiling = 100.0
    var celsius: Double
}

print(Temperature.boiling - Temperature.freezing)

Output:

100.0

static var dapat berubah, sehingga berguna untuk data yang dibagikan oleh semua instance, seperti penghitung jumlah instance yang telah dibuat:

class Ticket {
    static var issued = 0
    let number: Int

    init() {
        Ticket.issued += 1
        number = Ticket.issued
    }
}

let a = Ticket()
let b = Ticket()
print(a.number)
print(b.number)
print(Ticket.issued)

Output:

1
2
2

static func dipanggil pada tipe. Fungsi ini tidak memiliki instance self untuk digunakan, jadi fungsi ini hanya menggunakan argumen dan anggota statis lainnya. Fungsi ini cocok digunakan untuk helper dan cara bernama untuk membuat instance:

struct Color {
    var red: Int
    var green: Int
    var blue: Int

    static func gray(_ level: Int) -> Color {
        Color(red: level, green: level, blue: level)
    }
}

let c = Color.gray(128)
print(c.red + c.green + c.blue)

Output:

384

Di dalam tipe tersebut, Self adalah cara lain untuk menyebut tipe itu, sehingga anggota statis dapat ditulis sebagai Self.issued. method instance dapat membaca anggota statis, tetapi method statis tidak dapat membaca property instance karena method tersebut tidak dipanggil pada sebuah instance.

struct Level {
    static let maximum = 10
    var current = 1
    func isMax() -> Bool { current == Self.maximum }   // instans membaca static
    static func describe() -> String { "levels 1-\(maximum)" } // static membaca static
}
challenge icon

Tantangan

Mudah

Lengkapi class Order. Property statis nextId dimulai dari 1, dan setiap order baru menggunakan nextId saat ini sebagai id-nya lalu menaikkan nilainya. Konstanta statis taxPercent bernilai 10. Method instance total() mengembalikan subtotal ditambah pajak (dibulatkan ke bawah), dan method statis summary(of:) menerima array berisi order dan mengembalikan 3 orders, 660 total.

Kode yang disediakan membaca satu subtotal per baris, membuat order untuk setiap subtotal, mencetak #1: 110 untuk setiap order, lalu mencetak ringkasannya.

Tulis kodemu di Order.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) }
var orders: [Order] = []
for line in input {
    let order = Order(subtotal: Int(line)!)
    orders.append(order)
    print("#\(order.id): \(order.total())")
}
print(Order.summary(of: orders))
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