지난번에, dart를 설치 하는 방법을 알아보았다. 이번에는 좀 간단하게 사용 할 수 있는 방법을 공유함과 함께, dart의 재미있는 문법을 한 번 알아보도록 하자.
DartPad
https://dartpad.dev/ 이 사이트는 웹에서 dart를 사용 해볼 수 있게 되어있다.
간단하게 위처럼 코드를 작성하여, 실행을 해볼 수도 있고, 또한 해당 함수에 대해서도 설명을 바로바로 확인 할 수 있게 되어있다. dart를 설치해서 써도 되지만, 간단하게 문법만 맛을 볼거면, 이걸로도 충분해보인다.Cascades
이 문법은 꽤나 매력적이다. 동일한 객체를 리턴값과 상관없이 계속 이용 할 수 있게 해준다. 임시적으로 생성해야할 변수를 줄 수 있게 된다.
void main() {
Rect rect = Rect();
rect.width = 3;
rect.height = 4;
rect.setDouble();
print('area = ${rect.getArea()}');
}
class Rect {
int width = 0;
int height = 0;
int getArea() {
return width * height;
}
void setDouble() {
width = width * 2;
height = height * 2;
}
}
위의 코드를 보면 적당히 읽힐 것이다. (3, 4)짜리 사각형을 만든 너비와 높이를 각각 두배를 하고, 넓이를 구하는 코드이다. 이 코드에 cascade를 적용하여, 아래와 같이 코드를 수정 해볼 수 있다.
void main() {
Rect rect = Rect()
..width = 3
..height = 4
..setDouble();
print('area = ${rect.getArea()}');
}
위처럼 ..을 붙임으로 써, Rect()로 생성된 객체를 계속 사용 하는 방식이다. 할당 문도 그렇고, setDouble 함수 또한 절대 Rect의 객체를 리턴하진 않는다. 하지만, ..을 사용하면, 위처럼 하나의 객체를 연속해서 사용 할 수 있게 된다.
이는 함수의 합성을 어느정도 해결할 수 있을 것이다.
이름있는 파라미터
String greeting(firstName, lastName, {greet = 'Hello'}) {
return '$greet, $firstName $lastName';
}
코드를 일단 확인해보자. firstName, lastName, greet 세 개의 매개변수가 있는 함수이다. 이름있는 파라미터라고만 하면, 당연 파라미터에는 전부 이름이 있지, 라고 생각 할 수 있다. 그러면 호출을 하는 것을 한번 보자.
print(greeting('cho', 'sejiwork', greet: '안녕'));
print(greeting(greet: '안녕', 'cho', 'sejiwork'));
호출부는 좀 재미있어진다. greet의 경우 이름만 붙이면, 몇번째 인자로 호출 하던지 작동하게 된다.
dart에는 이외에도 재미있는 문법이 존재한다. 코드를 보다보면, 옛날 언어들은 좀 구식처럼 보이기도 한다.
댓글
댓글 쓰기