안녕하세요. 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(..)에 대해서 알아보았습니다.
감사합니다
'<개인공부> > [Flutter, Dart]' 카테고리의 다른 글
[Dart] 다트 확장 메서드(Extension Methods) - 클래스에 기능 추가 (0) | 2025.02.10 |
---|---|
[Flutter] 플러터와 안드로이드 스튜디오 설치 총정리 (10) | 2020.09.10 |
[Dart] 다트 기본 문법 정리 2편 (is, as) (2) | 2020.05.16 |
[Dart] 다트 기본 문법 정리 1편 (자료형, 연산자, 주석) (0) | 2020.05.10 |