<개인공부>/[Flutter, Dart]

[Dart] 다트 .. (캐스캐이드 연산자) 정리

BlockDMask 2025. 2. 5. 20:44
반응형

안녕하세요. BlockDMask입니다.

오늘은 Dart 문법 중에 신기하고 편리한 문법인 캐스캐이드 연산자(..)에 대해서 이야기해볼까 합니다.

잘 쓰면 코드를 간결하고 가독성 좋게만들어 줄 수 있습니다.

그럼, 오늘은 캐스캐이드 연산자가 무엇인지, 언제 사용하면 좋은지, 예제까지 함께 설명해보겠습니다.

 

1. 캐스캐이드 연산자(..)가 무엇인가?

우리가 보통 객체를 만들고 나면, 여러 개의 메서드를 호출하거나 프로퍼티를 설정해야 할 때가 많습니다.
하지만, 매번 객체 이름을 반복하는 것은 코드가 길어지고, 좀 귀찮습니다.

예를 들어서 아래 코드를 한번 보겠습니다.
아래 코드는 사람(Person) 객체의 이름과 나이를 설정한 후, 자기소개를 하는 코드입니다.

<코드> 일반적인 객체 함수 호출

 

여기서 보면 "person."을 계속해서 반복하고 있는 것을 볼 수 있습니다.

이럴 때 캐스캐이드 연산자(..)를 사용하면 한 줄로 깔끔하게 정리할 수 있습니다.

 

 

<코드> .. (캐스캐이드 연산자) 사용

 

 

 

 

2. 다트 캐스캐이드 연산자 사용 방법

2-1) 객체를 만들고 여러 설정을 해야 할 때.

자동차(Car) 객체를 만들고 브랜드와 속도를 설정하는 예제를 만들어 보겠습니다.

myCar 객체를 만들때 .. 캐스캐이드를 이용해서 한 줄에 세 개의 메서드를 호출하는 것을 볼 수 있습니다.

Car myCar = Car()..setBrand("aaa")..accelerate(20)..showStatus();  // 길게 늘리면 이렇게 볼 수 있습니다.

 

 

2-2) 프로퍼티에서도 사용이 가능합니다.

메서드뿐만 아니라, 변수(프로퍼티) 설정에도 ..을 사용할 수 있습니다.

 

2-3) 리스트에서도 활용이 가능합니다.

캐스캐이드 연산자를 통해서 list(리스트)에 여러 값을 추가할 수 있습니다.

 

 

 

3. 다트 .. 을 사용할 때 주의할 점.

3-1) 반환 값이 있는 메서드 에서는 .. 을 사용하면 안 됩니다. X

위 코드의 문제가 뭘까요?
- incrememt()는 int 값을 반환하지만, .. 은 객체를 접근하기 때문에 에러가 발생합니다.
- 그래서 ..increment()는 Count객체가 아니라 숫자(int)를 반환할 수 있기 때문에 아래와 같이 인식할 수 있습니다.

숫자.increment() // 숫자에서 increment 함수 불러줘! (에러)

 

 

3-2) 해결방법

메서드가 값을 반환하는 대신, this(자기 자신)을 반환하면 문제 해결!

 

 

오늘은 플러터에서 사용하는 Dart 언어의 문법 중 cascade(..)에 대해서 알아보았습니다.
감사합니다

반응형