Menu
CoddyTech

Struct

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

struct mengelompokkan data dan method seperti class. Swift menuliskan memberwise initializer untuk setiap struct, dengan satu parameter untuk setiap property, jadi struct tidak memerlukan init sendiri:

struct Point {
    var x: Int
    var y: Int

    func distanceFromOrigin() -> Int {
        abs(x) + abs(y)
    }
}

let p = Point(x: 3, y: -4)
print(p.x)
print(p.distanceFromOrigin())

Output:

3
7

Property dengan nilai default dapat tidak disertakan dalam inisialisasi memberwise:

struct Settings {
    var volume = 5
    var muted = false
}

let quiet = Settings(volume: 1)
print(quiet.volume)
print(quiet.muted)

Output:

1
false

Struct yang disimpan dalam konstanta let tidak dapat diubah sama sekali, bahkan properti var-nya. Simpan dalam var agar bisa mengubahnya:

let fixed = Point(x: 1, y: 2)
// fixed.x = 5    // error: tidak bisa mengubah nilainya, fixed adalah konstanta let

var moving = Point(x: 1, y: 2)
moving.x = 5       // boleh

Banyak tipe bawaan Swift adalah struct: Int, Double, String, Array, dan Dictionary. Struct buatanmu berperilaku sama seperti tipe-tipe tersebut: semuanya adalah nilai biasa.

struct Money {
    var cents: Int
    func formatted() -> String {
        "\(cents / 100).\(cents % 100 < 10 ? "0" : "")\(cents % 100)"
    }
}

print(Money(cents: 1250).formatted())
print(Money(cents: 305).formatted())

Output:

12.50
3.05
challenge icon

Tantangan

Mudah

Deklarasikan struct Item dengan property name (String), price (Int, dalam sen), dan quantity (Int). Tambahkan method total() yang mengembalikan hasil perkalian price dengan quantity, dan method line() yang mengembalikan 2 x tea = 350.

Kode yang disediakan membaca satu item per baris dengan format name,price,quantity, membuat setiap Item dengan initializer memberwise, lalu mencetak line(). Setelah itu, kode mencetak sum: dan jumlah semua total.

Tulis kodemu di Item.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 sum = 0
for row in input {
    let p = row.split(separator: ",").map(String.init)
    let item = Item(name: p[0], price: Int(p[1])!, quantity: Int(p[2])!)
    print(item.line())
    sum += item.total()
}
print("sum: \(sum)")
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