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

การอนุมานชนิดทำงานอย่างไร

ดูว่า 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การอนุมานชนิดทำงานอย่างไร
  2. เมื่อใดควรเพิ่มคำอธิบายชนิดอย่างชัดเจน
  3. การอนุมานจากค่าคงที่
  4. การอนุมานชนิดในคลอเชอร์
← กลับไปที่ Swift Academy