오늘도 짧게 훑어보려고 한다.
어제에 이어서 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 를 저장하면 두 개는 다르다.
'Programming > Dart & Flutter' 카테고리의 다른 글
Dart 6일 차 - Language Tour (6/7) (0) | 2020.07.25 |
---|---|
Dart 5일 차 - Language Tour (5/7) (0) | 2020.07.25 |
Dart 4일 차 - Language Tour (4/7) (0) | 2020.07.24 |
Dart 3일 차 - Language Tour (3/7) (0) | 2020.07.22 |
Dart 1일 차 - Language Tour (1/7), A basic Dart program (0) | 2020.07.20 |