การอนุมานชนิดทำงานอย่างไร
ดูว่า Swift อนุมานชนิดจากบริบทอย่างไร
การอนุมานชนิดทำงานอย่างไร เป็นบทเรียน Swift Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Swift Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
การอนุมานชนิดคืออะไร
Swift สามารถอนุมานชนิดของค่าได้จากบริบทของนิพจน์ คุณจึงมักไม่จำเป็นต้องเขียนชนิดอย่างชัดเจน
let count = 42
let name = "Swift"
print(type(of: count))
print(type(of: name))อนุมานจากค่าลิเทอรัล
ค่าลิเทอรัลจำนวนเต็มจะอนุมานเป็น Int ค่าลิเทอรัลทศนิยมจะอนุมานเป็น Double และค่าลิเทอรัลในเครื่องหมายคำพูดจะอนุมานเป็น String
let a = 10
let b = 3.14
let c = "hello"
print(type(of: a), type(of: b), type(of: c))อนุมานจากตัวสร้าง
เมื่อคุณเรียกตัวสร้าง ชนิดของผลลัพธ์จะเป็นตัวกำหนดชนิดที่อนุมานให้กับตัวแปร
let pi = Double.pi
let flag = Bool(true)
print(type(of: pi))
print(type(of: flag))อนุมานจากค่าที่ฟังก์ชันส่งคืน
ตัวแปรที่กำหนดค่าจากการเรียกฟังก์ชันจะใช้ชนิดของค่าที่ฟังก์ชันส่งคืน
func makeGreeting() -> String {
return "Hi"
}
let g = makeGreeting()
print(type(of: g))การอนุมานในคอลเลกชัน
ค่าลิเทอรัลของอาร์เรย์และพจนานุกรมจะอนุมานชนิดของสมาชิกจากค่าที่อยู่ภายใน
let nums = [1, 2, 3]
let pairs = ["a": 1, "b": 2]
print(type(of: nums))
print(type(of: pairs))การอนุมานสองทิศทาง
Swift อนุมานได้ทั้งสองทิศทาง ตั้งแต่ค่ามายังตัวแปร และจากชนิดที่ประกาศย้อนกลับไปยังค่าลิเทอรัล
let x = 5 // Int inferred from literal
let y: Double = 5 // literal adapts to Double
print(type(of: x), type(of: y))การอนุมานข้ามนิพจน์
คอมไพเลอร์จะแก้ชนิดของนิพจน์ทั้งหมดร่วมกัน โดยเลือกชนิดที่ทำให้การดำเนินการทุกอย่างถูกต้อง
let result = 2 + 3 * 4
print(result)
print(type(of: result))การอนุมานช่วยลดความรก
การอนุมานทำให้โค้ดสะอาดขึ้น การเขียน let names: [String] = [...] เป็นสิ่งซ้ำซ้อนเมื่อค่าลิเทอรัลระบุ String ไว้อยู่แล้ว
let names = ["Ada", "Bob", "Cleo"]
print(names.count)เมื่อการอนุมานล้มเหลว
หากคอมไพเลอร์ไม่สามารถหาชนิดเดียวที่เหมาะสมได้ คุณจะได้รับข้อผิดพลาดและต้องระบุชนิด คอลเลกชันว่างเป็นกรณีตัวอย่างที่พบบ่อย
let empty: [Int] = []
print(empty.isEmpty)การอนุมานเป็นแบบคงที่
การอนุมานเกิดขึ้นในเวลาแปลโปรแกรม เมื่ออนุมานแล้ว ชนิดจะถูกกำหนดตายตัว Swift ไม่ได้กำหนดชนิดแบบไดนามิก
var n = 10
// n = "text" // would be a compile error
n = 20
print(n)การอนุมานกับประสิทธิภาพ
การอนุมานไม่มีต้นทุนขณะโปรแกรมทำงาน คอมไพเลอร์จะแก้ชนิดให้เสร็จก่อนสร้างไบนารี ดังนั้นโค้ดที่อนุมานชนิดจึงทำงานได้เร็วเท่ากับโค้ดที่ระบุชนิด
let total = (1...100).reduce(0, +)
print(total)ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับการอนุมาน
สรุปทบทวน
การอนุมานชนิดช่วยให้ Swift อนุมานชนิดจากค่าลิเทอรัล ตัวสร้าง ค่าที่ส่งคืน และบริบทโดยรอบในเวลาแปลโปรแกรม ช่วยลดความรกโดยไม่มีต้นทุนขณะโปรแกรมทำงาน แต่จะล้มเหลวเมื่อไม่สามารถระบุชนิดเดียวได้ เช่น ในคอลเลกชันว่าง
let a = 1
let b = 2.0
let c = "x"
print(type(of: a), type(of: b), type(of: c))คำถามที่พบบ่อย
บทเรียน “การอนุมานชนิดทำงานอย่างไร” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การอนุมานชนิดทำงานอย่างไร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Swift Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Swift Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การอนุมานชนิดทำงานอย่างไร”
ดูว่า Swift อนุมานชนิดจากบริบทอย่างไร คุณปฏิบัติ Swift Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Swift Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Swift Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การอนุมานชนิดทำงานอย่างไร” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Swift Academy นี้ได้ไหม
ได้ บทเรียน Swift Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การอนุมานชนิดทำงานอย่างไร
- เมื่อใดควรเพิ่มคำอธิบายชนิดอย่างชัดเจน
- การอนุมานจากค่าคงที่
- การอนุมานชนิดในคลอเชอร์