본문 바로가기

Programming/Dart & Flutter

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

반응형

오늘도 짧게 훑어보려고 한다.

어제에 이어서 Import concepts 를 본다.

Important concepts

https://dart.dev/guides/language/language-tour#important-concepts

 

  • 변수에는 무엇이든 저장할 수 있다.
    • class 의 instance 인 object
    • 숫자, 함수, null 또한 object 이다.
    • 모든 object 는 Object class 를 상속한다.
  • Dart 는 강타입(strongly typed) 이지만 타입 추론이 되기 때문에 타입을 쓰는 것은 선택적이다.
  • Generic type 도 제공한다. 
  • top-level 함수를 제공한다. (main() 같은... 함수 안에 함수 생성도 가능하다.
  • top-level 변수도 제공 한다. instance variables 은 filed, properties 라고도 한다.
  • public, protected, private 같은 키워드가 없다. 식별자(identifier) 앞에 언더바(_) 가 붙으면 현재 라이브러리에서 private 이다.
  • 식별자는 문자 또는 언더바로 시작한다. 그리고 문자와 숫자의 조합으로 이루어진다.
  • 런타임 값을 가지는 expression 과 그렇지 않은 statements 가 있다. 
  • Dart tools 는 warnings, errors 를 보고한다. 런타임 에러는 exception 을 발생한다.

Keywords

많다... 이건 이번에 다 보기도 힘들겠다..

문서를 계속 보다 보면 다 나오겠지

 

keywords 는 identifiers 로 사용하면 안 된다. 

만약 필요하다면 superscripts 로 identifiers 로 사용할 수 있는 듯한데...

1,2,3 이 있는데... 이건 아직 잘 모르겠다.

Variables

변수는 참조를 저장한다. 

Default value

초기화되지 않은 변수의 초기값은 null 이다. 숫자 타입도 마찬가지다. Dart 에서는 모두 object 이기 때문에...

Final and const

https://dart.dev/guides/language/language-tour#final-and-const

 

변수 값을 바꾸지 않는다면 final, const 를 사용해라. var 대신 써도 된다.

final 변수는 한 번만 설정 가능하다.

const 는 컴파일 타임 상수이다.

top-level 변수나 class 변수는 첫 사용 때 초기화된다. (lazy)

 

컴파일 타임 상수가 되길 원한다면 const 를 사용해라

class level 에서 const 변수를 만들려면 static const 를 써라.

const 는 변수뿐만 아니라 특정 값을 만들 때도 사용 가능하다.

var a = const [] // 값이 상수
a = [] 

const b = [] // 상수 변수
b = [] // Error

Built-in types

이건 어제 했다.

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

Functions

Dart 는 객체지향 언어이다.

함수(funciton) 도 객체이다. 함수가 변수에 저장되거나 함수 매개변수/인자로 줄 수 있다는 뜻이다.

오래전부터 많이 봐오던 함수 선언 형식을 사용하고 있다.

 

함수는 required, optional 매개변수를 가진다. 필수 변수는 앞부분에 오고 optional 은 그 뒤에 온다.

 

함수를 호출할 때 java 와 같은 방식이 아닌 swift, objc 와 같이 named parameter 를 사용할 수 있다.

매개변수 기본값도 제공한다. (흔히 사용하던 방식이다.)

 

[] 를 써서 Positional parameters 를 사용할 수 있다. 

기본 값이 없어도 입력 안 해도 되고 여러 개인 경우 순차적으로 선택적으로 사용하면 되는 듯하다.

Anonymous functions

익명 함수가 있다. 클로져나 람다와 유사하다.

swift 에서 사용하는 클로져 형태라고 보면 된다. 실제로 같을지는 장담 못하겠다...

Lexical scope

변수, 함수 등을 참조할 수 있는 범위에 대한 내용이다.

일반적인 내용과 같다.

Lexical closures

아.. 이걸 뭐라 하더라..

함수에서 클로져를 만들 때 함수 인자를 넘기고 그걸 클로져에서 사용하면 그 값은 클로져를 사용하는 어디든지 같다 라는 것인데...

용어가 있었던 것 같은데 기억이 안 난다..

Testing functions for equality

함수를 변수로 저장했을 때 같은지 여부를 확인하는 내용이다.

top-level 함수와 static method 는 같은 것을 저장했다면 항상 같다.

class 의 method 인 a 가 있다고 하면 서로 다른 instance 의 a 를 저장하면 두 개는 다르다.

 

 

반응형