본문 바로가기

Programming/Dart & Flutter

Dart 3일 차 - Language Tour (3/7)

반응형

Operators

https://dart.dev/guides/language/language-tour#operators

 

swift 에서는 빠진 ++, -- 가 아직 제공된다. 

 

~/ 라는 연산자가 있다.

나누기를 한 후 결과값을 integer 형태로 돌려준다. 이건 좀 편하겠는데?

 

두 object 가 같은지는 identical 함수로 안다고 한다.

Type test operators

as, is 는 흔히 있는 거라 패스

is! 라는 것이 있다. is not 일까? 라고 생각했는데 맞네 .

Assignment operators

= 는 거의 대부분 다 쓰니 패스

??= 라는 생소한 것이 있다

a ??= 1 이라고 하면 a 가 null 이면 1을 대입하고 아니면 a 를 유지한다고 한다.

var a = 1
a ??= 2 // a는 여전히 1

var b = null
b ??= 2 // b는 2

Conditional expressions

a ? b : c 이런 형식은 많이 봤고...

 

a ?? b 이런 것이 있다. swift 와 동일하다 a 가 null 이면 b, 아니면 a 

Cascade notation (..)

이건 이전 글에서 했다.

2020/07/20 - [Programming/Dart] - Dart 1일 차 - Language Tour

 

Dart 1일 차 - Language Tour

오늘부터 Dart를 하루에 조금씩 공부해보려 한다. 하루에 특정 챕터를 하지 않고 시간 되는 만큼만 본다. 보면서 바로 여기 블로그에 정리하면서 본다. 그러므로 앞으로의 내용은 정리되지 않은..

yoonhg84.tistory.com

Other operators

(), [], . 은 흔히 생각하는 것 이다.

?. 는 swift 에서 optional chain 할때 사용하는 것과 같은듯?

Control flow statements

https://dart.dev/guides/language/language-tour#control-flow-statements

 

if, for 는 동일하다.

forEach 가 있는데 swift forEach 와 유사한 형태다

iterable 을 이용해서 간단하게 for를 사용할 수 있다. 이것도 swift 와 같네

while, do while 도 많이 봤고

break, continue 도 같네

 

예제에서 forEach 와 같이 where 이 나오는데.. 이건 swift 의 filter 와 같은 듯 

Switch and case

비교할 object 는 모두 같은 class 의 instace 여야 한다.

class 는 == 를 오버라이드 하면 안된다.

swift 랑 다르게 이전 언어들 처럼 case 마다 break 를 써줘야 한다.

case 에 코드가 있는 상태에서 break 를 안 쓰면 error 가 발생하네?! 좋은데?!

만약 다음 case 와 함께 처리하고 싶은 경우 case 의 내용이 비어 있어야 에러가 발생하지 않는다.

코드가 있는 상태에서 다음 case 로 넘어가는 fall-through 를 하고 싶다면... continue 에 label 을 지정해서 할 수 있다. (goto 가 생각나네... 이건 왜... 도대체....)

Assert

많이 사용해본대로 boolean 값으로 유효성 확인을 할 수 있다.

Exceptions

dart 도 thorw, catch 등이 제공된다. 

자바와 다르게 함수에 throw 할 exception 을 지정하지 않아서 어떠한 exception 도 처리가 가능하다.

Exception, Error type 이 있으며 많은 subtype 이 있다.

우리가 subtype 을 구현할 수도 있다.

null object 는 throw 할 수 없다.

Catch

catch 구문이 좀 다르다.

특정 exception 을 지정할때는 on 키워드를 사용하고 

catch 는 exception object 를 받을 때 사용한다 on 키워드와 함께 사용도 가능하다.

catch 는 두개의 parameter 를 가질 수 있는데 첫번째는 exception, 두번째는 stack trace 이다.

 

rethrow 로 처리하지 못한 exception 을 caller 에게 넘길 수 있다.

 

finally 도 많이 보던거다.

반응형