본문 바로가기

Programming/Dart & Flutter

Dart 1일 차 - Language Tour (1/7), A basic Dart program

오늘부터 Dart를 하루에 조금씩 공부해보려 한다.

하루에 특정 챕터를 하지 않고 시간 되는 만큼만 본다.

보면서 바로 여기 블로그에 정리하면서 본다.

그러므로 앞으로의 내용은 정리되지 않은.. 공부하다 대충 끄적인 느낌일 것이다.

A basic Dart program

https://dart.dev/guides/language/language-tour#a-basic-dart-program

Comment

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

 

// - 많은 언어에서 사용하는 것과 같이 한 줄짜리 주석이다.

멀티 라인 또한 많은 언어에서 사용하는 것과 같이 /* */ 으로 하면 된다.

// comment
/*
    comment
*/

/// 은 Documentation comments라고 한다. /// 를 연이어서 여러 줄 쓰게 되면 멀티라인 문서 주석과 같은 효과라고 한다. 이건 문서화를 할 때 사용하는 주석이라 굳이 자세히 안 보고 넘어간다.

Built-in types

https://dart.dev/guides/language/language-tour#built-in-types

 

언어에서 제공하는 기본 타입들이다.

  • numbers
  • strings
  • booleans
  • lists
  • sets
  • maps
  • runes
  • symbols

자바와 유사하게 모든 타입은 class의 instance이다. 그래서 각 타입별로 생성자가 존재한다.

Numbers

int

  • 64 bit를 안 넘으며 플랫폼에 따라 값 범위가 다르다.

double

  • 실수형
  • int와 double 은 num의 하위 타입이다. num 은 +, -, /, * 등 기본 연산이 포함되어 있다.

 

String -> Int (double 은 앞에 type 만 변경하면 된다.)

int.parse('1')

int -> String

1.toString()

C에서부터 많이 보던 비트 연산자도 똑같이 지원된다. <<, >>, &, |

Strings

Dart의 문자열은 UTF-16 코드로 이루어져 있다.
따옴표 또는 큰따옴표 쌍으로 사용 가능하다.

 

문자열 안에서 식 (expression)을 사용하려면 ${} 를 사용하면 된다. 어디서 많이 보던...
만약 identifier (변수 등) 이면 {} 를 생략해도 된다.

var name = "chope"
'My name is ${name}'
"I am $name"

문자열 더하기는 + 로 하면 된다.

 

멀티라인 문자열은 따옴표 또는 큰따옴표 연속 3개의 쌍으로 작성하면 된다.

 

raw 문자열은 따옴표/큰따옴표 앞에 r 을 붙이면 된다.

Booleans

많이 사용하던 것이랑 같음.

Lists

다른 언어에서 사용하는 array와 유사하다.

literals는 javascript 와 비슷하다. (내가 보기에는 swift와 유사하다. 그게 그거니...)

 

당연히 0로 시작하는 index를 이용한다.

 

크기/길이를 구하는 방법은 list.length이다.

 

spread operator (...), null-aware spread operator (...?) 는 조금 생소하다.

배열의 범위를 지정하는 연산자인 줄 알았는데... 그게 아니었다.

배열을 선언할 때 특정 배열의 값을 이용할 경우 사용한다.

var list = [1, 2, 3];
var list2 = [0, ...list];
// 0, 1, 2, 3

여기서 만약에 list 이 null 이면... 오류가 발생할 것이다.

이런 오류를 방지하기 위해 null-aware spread operator를 사용한다.

var list;
var list2 = [0, ...?list];
// 0

list 가 null 이면 그냥 무시하겠다는 것이다.

 

collection if, collection for 라는 것도 생소하다.

배열 선언 시 코드를 넣어서 분기하거나 반복할 수 있다.

Sets

다른 언어에서와 같이 순서가 없는 유니크한 값들의 집합체이다.

array 와 구분되게 { } 로 선언한다.

 

값 추가에는 add, addAll 함수를 사용한다.

값의 크기, 개수를 확인하려면 length 를 사용한다.

Maps

swift 의 dictionary, java 의 table/map 과 유사하다.

유니크한 key 와 값이 쌍으로 이루어진다.

Sets 과 선언 형식은 { } 로 같지만 key, value 구분을 : 로 해준다.

var dictionary = {'a': 1};
dictionary['b'] = 2; // set
dictionary['b']; // get, 2
dictionary['c']; // get, null
dictionary.length; // 2

Runes and grapheme clusters

문자열에서 유니코드 사용하는 것과 관련이 있다.....

이건 넘어간다.

Symbols

음... 이것도 사용 안 할 것 같으니 넘어간다.

main()

https://dart.dev/guides/language/language-tour#the-main-function

 

모든 앱은 최상위에 main() 함수가 있어야 한다.

return type 은 void 이고 optional parameter 를 가진다.

여러 언어와 마찬가지로 프로그램이 시작되는 부분이자 종료되는 부분이다.

Cascade notation (..)

https://dart.dev/guides/language/language-tour#cascade-notation-

 

이건... 코드 글자 수를 줄여주는데 중요한 역할을 할 것 같다.

같은 object 의 함수, 프로퍼티(변수) 등에 접근할 때 object identifier 를 안 써주고 사용할 수 있다.

// swift 로 예를 들어 본다. 심지어... 세미콜론도 안 붙여도 된다.
nameLabel
  ..text = "chope"
  ..font = UIFont.systemFont(ofSize: 14.0)
  ..textColor = UIColor.red;

A basic Dart program 를 읽다 관련 문서를 계속 들어가면서 읽었더니 정리가 안되어 있다.

오늘은 여기까지만 봐야지

 

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음

태그