Swift Academy · บทเรียน

CustomStringConvertible

กำหนดคำอธิบายชนิดของคุณให้อ่านง่าย

บทเรียน 1 จาก 413 ขั้นตอน

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

CustomStringConvertible คืออะไร

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

ค่าเริ่มต้นดูไม่สวยงาม

หากไม่กำหนด โครงสร้างจะแสดงรูปแบบสมาชิกทั้งหมด ซึ่งมักมีข้อมูลรบกวนมากเกินไป:

struct Point { let x: Int; let y: Int }
print(Point(x: 1, y: 2))  // Point(x: 1, y: 2)

การเพิ่ม description

ทำให้สอดคล้องกับโปรโตคอลและกำหนด var description: String:

struct Point: CustomStringConvertible {
    let x: Int
    let y: Int
    var description: String { "(\(x), \(y))" }
}
print(Point(x: 1, y: 2))  // (1, 2)

ใช้โดย print และ String(describing:)

description ของคุณคือสิ่งที่ print และการแทรกสตริงนำไปใช้:

struct Money: CustomStringConvertible {
    let cents: Int
    var description: String { "$\(Double(cents) / 100)" }
}
let m = Money(cents: 250)
print("price is \(m)")  // price is $2.5

description กับคุณสมบัติโดยตรง

description มีไว้สำหรับข้อความที่มนุษย์อ่านได้และแสดงต่อผู้ใช้ ไม่ได้มีไว้เพื่อแปลงกลับมาอ่านเป็นข้อมูล นั่นเป็นเรื่องคนละส่วนกัน (Codable) ควรทำให้ข้อความอ่านง่าย

การจัดรูปแบบอีนัม

กำหนดชื่อที่อ่านเป็นมิตรให้แก่อีนัม:

enum Suit: CustomStringConvertible {
    case hearts, spades
    var description: String {
        switch self {
        case .hearts: return "Hearts"
        case .spades: return "Spades"
        }
    }
}
print(Suit.hearts)  // Hearts

การประกอบ description

สร้าง description จาก description ของสมาชิก:

struct Card: CustomStringConvertible {
    let rank: Int
    let suit: String
    var description: String { "\(rank) of \(suit)" }
}
let cards = [Card(rank: 1, suit: "H"), Card(rank: 13, suit: "S")]
print(cards.map { $0.description })  // ["1 of H", "13 of S"]

ภายในคอลเลกชัน

การพิมพ์คอลเลกชันจะเรียกใช้ description ของสมาชิกแต่ละรายการ:

struct Tag: CustomStringConvertible {
    let name: String
    var description: String { "#\(name)" }
}
print([Tag(name: "swift"), Tag(name: "ios")])  // [#swift, #ios]

การแทรกสตริงใช้ description

การแทรกสตริงจะนำ description ของคุณไปใช้โดยอัตโนมัติ:

struct Temperature: CustomStringConvertible {
    let celsius: Int
    var description: String { "\(celsius)C" }
}
let t = Temperature(celsius: 21)
print("Now: \(t)")  // Now: 21C

ทำให้ประหยัดทรัพยากร

อาจมีการเรียกใช้ description บ่อยครั้ง (เช่น การบันทึกการทำงานและการแก้จุดบกพร่อง) หลีกเลี่ยงการทำงานหนักภายในคุณสมบัตินี้ ควรสร้างสตริงอย่างง่ายจากคุณสมบัติที่จัดเก็บไว้

struct ID: CustomStringConvertible {
    let value: Int
    var description: String { "ID#\(value)" }
}
print(ID(value: 42))  // ID#42

การจัดรูปแบบตามเงื่อนไข

description สามารถเลือกสาขาตามสถานะเพื่อให้อ่านได้เป็นธรรมชาติ:

struct Stock: CustomStringConvertible {
    let count: Int
    var description: String {
        count == 0 ? "Out of stock" : "\(count) in stock"
    }
}
print(Stock(count: 0))  // Out of stock
print(Stock(count: 5))  // 5 in stock

ตรวจสอบความเข้าใจอย่างรวดเร็ว

CustomStringConvertible ต้องมีคุณสมบัติใด?

สรุป

คุณได้เรียนรู้เกี่ยวกับ CustomStringConvertible:

  • กำหนด var description: String สำหรับข้อความที่แสดงต่อผู้ใช้
  • ใช้โดย print, String(describing:) และการแทรกสตริง
  • ทำให้อ่านง่ายและประหยัดทรัพยากร ไม่ต้องออกแบบมาเพื่อแปลงกลับเป็นข้อมูลเดิม
  • ทำงานภายในคอลเลกชันได้โดยอัตโนมัติ

ถัดไป: CustomDebugStringConvertible

เริ่มต้นได้ฟรี

เรียนรู้ Swift ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
122
บทเรียน
409

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

บทเรียน “CustomStringConvertible” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “CustomStringConvertible”

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

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

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

บทเรียน “CustomStringConvertible” ใช้เวลานานแค่ไหน

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

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

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

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

  1. CustomStringConvertible
  2. CustomDebugStringConvertible
  3. การสะท้อนด้วย Mirror
  4. การสร้างชนิดที่สะดวกต่อการแก้ไขข้อบกพร่อง
← กลับไปที่ Swift Academy