CustomStringConvertible
กำหนดคำอธิบายชนิดของคุณให้อ่านง่าย
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.5description กับคุณสมบัติโดยตรง
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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- CustomStringConvertible
- CustomDebugStringConvertible
- การสะท้อนด้วย Mirror
- การสร้างชนิดที่สะดวกต่อการแก้ไขข้อบกพร่อง