본문 바로가기
프로그래밍 언어/Dart

[Dart] Cascade Notation

by BK0625 2023. 10. 25.
반응형

Cascade Notation

이러한 코드가 있다.

class Player{
  String name; 
  int xp;
  String team;
 
  
  Player({required this.name,required this.xp,required this.team});
  

  void sayHello(){
    print("hi my name is $name"); //클래스 함수 내에서는 this를 쓸 필요가 없음
  }
  
}
void main() {
  var test = Player(name:'test', xp:1200, team:'red');
  
  
}

 

여기서 인스턴스의 프로퍼티 값을 바꾸고 싶다면 어떻게 해야 될까? 일반적으로는 test.name = '~~~' 이런 식으로 하나씩 바꿔 주어야 될 것이다. 근데 이러면 비슷한 코드를 계속 써야한다. 이걸 이렇게 간단히 할 수 있다.

 

  var test = Player(name:'test', xp:1200, team:'red')
    ..name='test2'
    ..xp = 1400
    ..team = 'blue';

 

이렇게 하면 일반적인 방법보다 적은 코드로 값을 수정할 수 있다. 앞의 점 ..가 test를 가리키기 때문에 값을 수정할 수 있다. 주의할 점은 첫번째 줄에서 ; 을 쓰는게 아니라 제일 마지막에 ;을 써야 한다. 

 

 

Enum

개발을 하다보면 제일 흔하게 나오는 실수 중 하나는 바로 오타이다 예를 들면....

 

 

red를 써야하는데 redd를 쓰는 오타... 이런 것을 방지해줄 수 있게 enum을 사용할 수 있다. 먼저 enum을 선언한다.

 

 

안에는 String이여도 굳이 ""를 해줄 필요가 없다. 밑에 내려와서 Player 클래스의 team 변수의 타입을 Team으로 바꿔준다.

 

class Player{
  String name; 
  int xp;
  Team team;
  
  ...
  
}

 

그리고 main 함수로 돌아와 다음과 같이 작성한다.

 

 

Team 안에 있는 value 중에 하나를 선택하여 작성하면 된다. 그러면 오타가 날 가능성이 없고 더 안전한 개발이 가능하다. 쉽고 유용하다. 특히 다트를 사용하는 플러터에서는 enum을 많이 사용하기 때문에 알아두어야 한다.

반응형

'프로그래밍 언어 > Dart' 카테고리의 다른 글

[Dart] 추상화 클래스와 상속, Mixin  (0) 2023.10.25
[Dart] 클래스 - 클래스와 생성자  (2) 2023.10.25
[Dart] 함수  (0) 2023.02.26
[Dart] 자료형  (0) 2023.02.22
[Dart] Dart를 시작해보자  (0) 2023.02.21