다트 깊은복사

김지원·2023년 10월 30일
0
class UserDTO {
  int id;
  String username;
  String password;
  
  UserDTO(this.id, this.username, this.password);
  
  UserDTO.copy(UserDTO userDTO) : this(userDTO.id, userDTO.username, userDTO.password);
  
  // 선택적 매개변수 id, username, password를 적었다면 그거로 하고 안적어서 null이면 userDTO의 필드꺼로
  UserDTO.update(UserDTO userDTO, {int? id, String? username, String? password}) :
    id = id ?? userDTO.id, 
    username = username ?? userDTO.username,
    password = password ?? userDTO.password;
}
void main(){
  UserDTO userDTO = UserDTO(1, 'ssar', '1234');
  
  // 1. 깊은 복사 (안좋은 방법)
  UserDTO newDTO = UserDTO(userDTO.id, userDTO.username, userDTO.password);
  
  // 2. 깊은 복사 (좋은 방법)
  UserDTO newDTO2 = UserDTO.copy(userDTO); 
  
  // 3. 깊은 복사 (좋은 방법)
  UserDTO newDTO3 = UserDTO.update(userDTO);
  
  // 4. 깊은 복사 + 업데이트
  UserDTO newDTO4 = UserDTO.update(userDTO, password: '5678');
}
profile
https://github.com/k7850

0개의 댓글

관련 채용 정보