Swift Academy · บทเรียน

การผูกค่าด้วย if let และ guard let

แกะค่าออปชันแนลอย่างปลอดภัยด้วยรูปแบบการผูกค่าแบบมีเงื่อนไขและออกก่อน

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

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

ยินดีต้อนรับ

ออปชันนัลใช้แทนค่าที่อาจมีอยู่หรือไม่มีก็ได้ การแกะค่าอย่างปลอดภัยด้วย `if let` และ `guard let` เป็นพื้นฐานของโค้ด Swift ที่ทำงานโดยไม่ทำให้แอปขัดข้อง

ออปชันนัลคืออะไร

```swift var name: String? = "Alice" // has a value var age: Int? = nil // no value ``` ออปชันนัลจะห่อค่าไว้ใน `.some(value)` หรือ `.none` คุณต้องแกะค่าก่อนนำไปใช้

if let — การผูกค่าแบบมีเงื่อนไข

```swift if let name = name { print("Hello, \(name)!") // name is String here } else { print("No name provided") } ``` ภายในบล็อก `if` ค่า `name` จะเป็น `String` ที่ไม่ใช่ออปชันนัล

if let ด้วยชื่อเดิม (Swift 5.7 ขึ้นไป)

ตั้งแต่ Swift 5.7 เป็นต้นไป คุณสามารถใช้ชื่อตัวแปรเดิมซ้ำได้: ```swift if let name { print("Hello, \(name)!") } ``` สั้นและสะอาดขึ้น โดยไม่ต้องเขียน `let name = name`

guard let — การออกก่อนกำหนด

`guard let` จะแกะค่าและออกจากฟังก์ชันก่อนกำหนดหากค่าเป็น nil: ```swift func greet(_ name: String?) { guard let name else { return } print("Hello, \(name)!") } ``` หลังคำสั่ง guard ค่า `name` จะรับรองได้ว่าไม่เป็น nil ไปตลอดส่วนที่เหลือของฟังก์ชัน

การเชื่อมการผูกค่าหลายรายการ

แกะค่าออปชันนัลหลายค่าภายในคำสั่งเดียว: ```swift if let first = firstName, let last = lastName { print("\(first) \(last)") } guard let id = userId, let token = authToken else { return } ``` การผูกค่าทั้งหมดต้องสำเร็จ จึงจะดำเนินการในเนื้อหาของคำสั่งได้

การเพิ่มเงื่อนไข where

รวมการแกะค่ากับเงื่อนไขเข้าด้วยกัน: ```swift if let score = rawScore, score >= 60 { print("Passed with \(score)") } ``` การผูกค่าและเงื่อนไขจะถูกประเมินร่วมกัน ทำให้อ่านง่ายกว่าการซ้อนคำสั่ง if

guard let กับ if let

ใช้ `if let` เมื่อทั้งสองแขนงต้องใช้ค่านั้น ใช้ `guard let` เพื่อตรวจสอบเงื่อนไขเบื้องต้นแล้วออกก่อนกำหนด: ```swift // if let: handle both cases if let data = response.data { process(data) } else { showError() } // guard: ensure requirements are met guard let data = response.data else { showError(); return } process(data) ```

if let ซ้อนกันกับ guard

`if let` ที่ซ้อนกันลึกหลายชั้น ("พีระมิดแห่งความยุ่งเหยิง") อ่านได้ยากกว่า: ```swift if let a = aOpt { if let b = bOpt { if let c = cOpt { process(a, b, c) } } } ``` ปรับโครงสร้างใหม่ด้วย `guard`: ```swift guard let a = aOpt, let b = bOpt, let c = cOpt else { return } process(a, b, c) ```

การตรวจสอบโดยไม่ผูกค่า

ใช้ `!= nil` เมื่อต้องการทราบเพียงว่ามีค่าอยู่หรือไม่: ```swift if token != nil { showLoggedInUI() } ``` แต่ควรใช้ `if let` หากต้องใช้ค่าที่แกะแล้วด้วย

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

คำสั่งใดจะออกจากขอบเขตปัจจุบัน หากออปชันนัลมีค่าเป็น `nil`

สรุป

ประเด็นสำคัญ: • `if let x = optional` — เข้าสู่บริบทที่ค่าไม่เป็น nil อย่างปลอดภัย • `guard let x = optional else { return }` — ออกก่อนกำหนดทันทีเมื่อไม่ผ่านเงื่อนไข • เชื่อมการผูกค่าหลายรายการด้วยเครื่องหมายจุลภาค • `guard let` ช่วยหลีกเลี่ยงการซ้อนเป็นพีระมิดที่อ่านยาก • Swift 5.7 ขึ้นไป: `if let x` (รูปแบบย่อ ใช้ชื่อเดิม) ถัดไป: การใช้ค่าแทน nil และตัวดำเนินการ ??
เริ่มต้นได้ฟรี

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

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

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

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

บทเรียน “การผูกค่าด้วย if let และ guard let” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การผูกค่าด้วย if let และ guard let”

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

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

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

บทเรียน “การผูกค่าด้วย if let และ guard let” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การผูกค่าด้วย if let และ guard let
  2. การรวมค่า nil และตัวดำเนินการสามส่วนกับออปชันแนล
  3. ตัวดำเนินการเชื่อมออปชันแนล ?.
  4. ออปชันแนลที่แกะค่าโดยนัยและเวลาที่ควรหลีกเลี่ยง
← กลับไปที่ Swift Academy