0Pricing
Swift Academy · บทเรียน

โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น

เปรียบเทียบความหมายแบบค่าและแบบอ้างอิง ใช้พร็อพเพอร์ตีที่จัดเก็บและคำนวณ ตัวสังเกตพร็อพเพอร์ตี ตัวเริ่มต้น และ deinit ของคลาส

โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน

ภาพรวม

Swift มีชนิดประกอบหลักสองชนิด ได้แก่ โครงสร้าง (ค่า) และ คลาส (การอ้างอิง)

  • โครงสร้างจะคัดลอกเมื่อกำหนดค่า
  • คลาสใช้การอ้างอิงร่วมกัน

ค่ากับการอ้างอิง

โครงสร้างคัดลอกค่า ส่วนคลาสใช้การอ้างอิงร่วมกัน การเปลี่ยน b ไม่ส่งผลต่อ a แต่การเปลี่ยน d ส่งผลต่อ c

struct Point { var x = 0, y = 0 }
class CPoint { var x = 0, y = 0 }

var a = Point(x: 1, y: 1)
var b = a          // copy
b.x = 9
print("struct a.x =", a.x, "b.x =", b.x) // 1, 9

let c = CPoint(); c.x = 1
let d = c          // same reference
d.x = 9
print("class c.x =", c.x, "d.x =", d.x) // 9, 9

คุณสมบัติ

คุณสมบัติที่จัดเก็บใช้เก็บข้อมูล ส่วนคุณสมบัติที่คำนวณจะสร้างค่าขึ้นเมื่อมีการเข้าถึง

struct Rectangle {
    var width: Double      // stored
    var height: Double     // stored
    var area: Double {     // computed
        return width * height
    }
}
let r = Rectangle(width: 3, height: 4)
print(r.area)  // 12

ตัวสังเกตการณ์

ใช้ willSet/didSet เพื่อสังเกตการเปลี่ยนแปลงของคุณสมบัติที่จัดเก็บ

struct Counter {
    var value: Int = 0 {
        willSet { print("will set to", newValue) }
        didSet  { print("did set from", oldValue) }
    }
}
var cnt = Counter()
cnt.value = 5

ตัวเริ่มต้น

โครงสร้างจะมีตัวเริ่มต้นแบบสมาชิกให้โดยอัตโนมัติ คลาสกำหนด init (ตัวเริ่มต้นหลัก) และสามารถเพิ่มตัวเริ่มต้นอำนวยความสะดวกได้

struct User {
    var name: String
    // memberwise init is synthesized: User(name:)
}
class Person {
    var name: String
    init(name: String) {    // designated
        self.name = name
    }
    convenience init() {    // convenience
        self.init(name: "Guest")
    }
}
let u = User(name: "Ada")
let p = Person()
print(u.name, p.name)

deinit

เฉพาะคลาสเท่านั้นที่มี deinit ซึ่งจะถูกเรียกเมื่ออินสแตนซ์ถูกคืนพื้นที่จัดเก็บ (ARC)

class Temp {
    let id: Int
    init(id: Int) { self.id = id }
    deinit { print("Temp \\(id) deinit") }
}
do {
    let t = Temp(id: 1)
    print("using", t.id)
} // t goes out of scope and deinit may run

คำถามเกี่ยวกับโครงสร้างกับคลาส

ตรวจสอบอย่างรวดเร็ว: ข้อความใดเปรียบเทียบโครงสร้างกับคลาสได้ถูกต้อง

สรุปทบทวน

สรุปทบทวน: เลือกใช้โครงสร้างสำหรับข้อมูลอย่างง่าย (ความหมายเชิงค่า) ใช้คลาสสำหรับตัวตนร่วม การสืบทอด และ deinit เพิ่มคุณสมบัติที่จัดเก็บหรือคำนวณ ตัวสังเกตการณ์ และตัวเริ่มต้นที่เหมาะสม

คำถามที่พบบ่อย

บทเรียน “โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น”

เปรียบเทียบความหมายแบบค่าและแบบอ้างอิง ใช้พร็อพเพอร์ตีที่จัดเก็บและคำนวณ ตัวสังเกตพร็อพเพอร์ตี ตัวเริ่มต้น และ deinit ของคลาส คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 3 บทเรียน

บทเรียน “โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม

ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. โครงสร้างกับคลาส พร็อพเพอร์ตี และตัวเริ่มต้น
  2. พร็อพเพอร์ตีที่จัดเก็บกับคำนวณและตัวสังเกต
  3. ตัวเริ่มต้นและ deinit (คลาส)
← กลับไปที่ Swift Academy