[Video Summary] Ch. 2.5 Challenge Solution: RevealedWord After Guess, plus .map{} function (2025)

SwiftUI 10 Th02 2025

Mô tả nhanh

Video này trình bày cách giải quyết thử thách "reveal word after last guess" bằng cách sử dụng các kỹ thuật đã học và giới thiệu hàm map để tối ưu hóa code.

Video

Click vào hình dưới để mở:
Ch. 2.5 Challenge Solution: RevealedWord After Guess, plus .map{} function (2025)

Mô tả chi tiết

Video này hướng dẫn giải quyết thử thách tạo một chuỗi hiển thị các chữ cái đã đoán đúng và dấu gạch dưới cho các chữ cái chưa đoán được trong một từ cần đoán, với khoảng trắng giữa các ký tự.

Ch. 2.5 Challenge Solution: RevealedWord After Guess, plus .map{} function (2025)

Các bước thực hiện:

  1. Khởi tạo:

    • wordToGuess: Từ cần đoán (ví dụ: "Swift").
    • lettersGuessed: Chuỗi chứa các chữ cái đã đoán (ví dụ: "SQFTX").
    • revealedWord: Chuỗi rỗng, sẽ chứa kết quả hiển thị.
  2. Duyệt qua các chữ cái trong wordToGuess:

    • Vòng lặp for: Duyệt qua từng letter trong wordToGuess.
    • Kiểm tra: Sử dụng lettersGuessed.contains(letter) để kiểm tra xem letter đã được đoán chưa.
      • Nếu đã đoán: Thêm letter và khoảng trắng vào revealedWord.
      • Nếu chưa đoán: Thêm dấu gạch dưới "_" và khoảng trắng vào revealedWord.
  3. Xóa khoảng trắng thừa: Loại bỏ khoảng trắng cuối cùng trong revealedWord bằng revealedWord.removeLast().

  4. In kết quả: In ra wordToGuess, lettersGuessedrevealedWord.

  5. Sử dụng map (Functional Programming):

    • Giới thiệu map: map là một phương pháp lập trình hàm, cho phép biến đổi dữ liệu thông qua các hàm thay vì vòng lặp.
    • Cú pháp: wordToGuess.map { letter in ... }. Trong đó, letter đại diện cho từng ký tự trong wordToGuess.
    • Biến đổi: Sử dụng toán tử ternary để kiểm tra xem letter có trong lettersGuessed không. Nếu có, trả về letter; nếu không, trả về "_". Kết quả là một mảng các chuỗi.
    • Kết hợp: Sử dụng joined(separator: " ") để nối các phần tử của mảng thành một chuỗi duy nhất, với khoảng trắng giữa các phần tử.
    • Rút gọn code: Sử dụng shorthand $0 để thay thế cho letter in, giúp code ngắn gọn hơn.

Ví dụ code sử dụng map:

revealedWord = wordToGuess.map { lettersGuessed.contains($0) ? String($0) : "_" }.joined(separator: " ")

Video cũng trình bày cách thay đổi các giá trị wordToGuesslettersGuessed để kiểm tra tính đúng đắn của code.

Lời chúc

Chúc mừng bạn đã trở thành một "string sorcerer"! Hãy tiếp tục theo dõi các bài học tiếp theo để áp dụng kiến thức này vào việc xây dựng ứng dụng Word Garden.

Tags