본문 바로가기

Languages/Dart & Flutter

dart .. operator 문법

다트 .. 문법

class Calc{
  int num=0;
  int sum(int n) => num+=n;
  
  Calc sumAlt(int n){
     num += n;
    return this;
  }
 
}

void main1() {
  final calc = Calc();
  var d= calc.sum(3);
  print(d); // 3
}

void main2() {
  final calc = Calc();
  var d= calc..sum(3)..sum(3);
  print(d); // Instance of 'Calc'
}

void main3() {
  final calc = Calc();
  var d1= calc.sumAlt(3).sumAlt(3);
  print(d1); // Instance of 'Calc'
}

코드르 보면 이해가 쉬울 것이다.

 

그래도 말로 풀어보자.

 

main1의 d 결과는 3이다.

그럼 main2의 결과는 ? 자연스럽게 6이라고 생각 할 것이다.

하지만 결과는 Calc 객체이다.

dart의 .. 문법은 sum이 연산된 결과를 포함한 Calc 객체를 반환하는 것이다.

6의 값을 알기 위해선 d.num을 해주면 알 수 있다.

 

main3은 ..연산자를 직접만들어 본 것이다.

조금 더 쉽게 이해 할 수 있을 것이다.

sumAlt 함수를 만들었다.

이 함수의 return은 this 즉 Clac 객체이다.

 

그럼 main2의 ..연산자를 안써도 같은 결과가 나오는 걸 볼 수 있다.

즉, dart의 .. 연산자는 체이닝을 편하게 해준다는 것.