Menu
CoddyTech

복습 - 안전한 널 처리

Coddy Dart 여정의 기초 섹션에 포함된 레슨. 94개 중 82번째.

challenge icon

챌린지

쉬움

모바일 앱을 위한 사용자 프로필 시스템을 만들고 있습니다. Dart의 널 안전성 기능에 대한 이해를 보여 주는 UserProfile 클래스를 만드세요.

다음을 포함하는 UserProfile 클래스를 구현하세요.

  1. 널을 허용하지 않는 속성 (항상 값이 있어야 함):
    • int 타입의 id
    • String 타입의 createdDate
  2. 널을 허용하는 속성 (초기화 시 null일 수 있음):
    • String? 타입의 name
    • String? 타입의 email
    • int? 타입의 age
  3. 지연 초기화 속성:
    • late 키워드를 사용해 선언한 String 타입의 displayName
  4. 생성자:
    • id와 createdDate를 필수 매개변수로 받음
    • displayName을 "Guest"로 초기화함
  5. 메서드: void printProfile() 다음 형식으로 사용자 프로필을 출력합니다.

    User Profile:
    ID: <id>
    Created: <createdDate>
    Name: <name or 'Not provided'>
    Email: <email or 'Not provided'>
    Age: <age or 'Not provided'>
    Display Name: <displayName>
    -------------------
  6. 메서드: void updateEmail(String? newEmail)
    • 새 값으로 email 속성을 업데이트합니다.
  7. 메서드: String getDisplayName()
    • name이 null이 아니면 displayName = name!으로 설정합니다 (널 단언 연산자 사용).
    • displayName의 현재 값을 반환합니다.

중요: name 속성을 업데이트한 후 프로필을 다시 출력하기 전에 getDisplayName()을 호출하여 displayName 필드를 업데이트해야 합니다.

예상 출력에 표시된 대로 프로필을 만들고, 업데이트하고, 정보를 표시하도록 코드를 완성하세요.

직접 해보기

void main() {
  // 사용자 프로필 생성
  final profile = UserProfile(1, 'today');
  
  // 초기 프로필 출력
  profile.printProfile();
  
  // 프로필 업데이트
  profile.name = 'John Doe';
  profile.updateEmail('john@example.com');
  profile.age = 30;
  
  // 표시 이름을 업데이트하고 업데이트된 프로필 출력
  profile.getDisplayName(); // displayName을 업데이트하려면 이것을 호출
  profile.printProfile();
}

class UserProfile {
  // TODO: 속성 추가 (id, createdDate, name, email, age, displayName)
  
  // TODO: 생성자 생성
  
  // TODO: printProfile() 메서드 구현
  
  // TODO: updateEmail() 메서드 구현
  
  // TODO: getDisplayName() 메서드 구현
}

기초의 모든 레슨

직접 연습해 보세요: 온라인 Dart 컴파일러