일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- docker
- Algorithm
- Python
- jupyter lab
- 구조체
- c#
- gitlab
- HTML
- vim
- c언어
- Flutter
- github
- 포인터
- C언어 포인터
- 유니티
- dart 언어
- c# 윈폼
- 다트 언어
- c# 추상 클래스
- 플러터
- Data Structure
- 깃
- C++
- c# winform
- Houdini
- Unity
- jupyter
- git
- 도커
- C# delegate
- Today
- Total
nomad-programmer
[Programming/Dart] 다트 언어 소개 및 연습 환경 본문
플러터 개발에는 다트 언어를 사용한다.
다트 문법 온라인 메뉴얼
https://dart.dev/guides/language/language-tour
다트 문법은 main() 함수가 진입점(entry point)이다.
void main() {
print('Hello, World!');
}
주석
// 이것도 주석
/*
이것도 주석
*/
/// 이것도 주석
void something() {}
- // : 한줄 주석
- /* ... */ : 여러줄 주석
- /// : 문서 주석
///를 메소드나 클래스 정의 위에 작성하면 dartdoc과 같은 문서 생성 도구를 통해 문서를 자동으로 생성해준다.
https://dart.dev/tools/dartdoc
다트 언어 연습 환경
웹 브라우저에서 다트 문법을 테스트할 수 있다.
하지만 나는 이곳에서 하지 않고 android studio나 intellij 에디터를 사용한다. 가장 큰 이유는 vim plugin을 사용할 수 있기 때문이다. vim이 없다면 너무 힘들다.....그래서 vim을 사용할 수 있는 에디터를 애용하고 있다.
android studio나 intellij 에디터를 사용한다면 dart 파일이 새로이 생성하여 이곳에서 테스트 및 연습을 하면 된다.
타입 추론
다트는 C#과 마찬가지로 타입을 직접 명시하지 않고 var로 대체할 수 있는 타입 추론을 지원한다.
var i = 10;
var d = 5.5;
var s = 'hello';
var b = true;
...
상수 final, const
C# 언어에서의 readonly가 final이다. const는 똑같이 const이다. readonly, const 키워드와 개념도 똑같다.
변수는 값이 변경되어 의도치 않게 에러를 발생할 가능성이 있으므로 가급적이면 값이 변하지 않게 상수로 사용하는 것이 좋다. 선언할 때 final 키워드를 제일 앞에 붙이면 값이 수정되지 않는 상수로 사용할 수 있다.
- const : 컴파일 타임(CompileTime)에 메모리에 올리고 상수화 시킨다.
- final : 실행 타임(RunTime)에 상수화 시킨다 (생성자를 통하여 상수화).
final String name = '김연아';
name = 'yuna'; // 에러
타입을 생략하고 다음과 같이 짧게 작성할 수 있다.
final name = '김연아';
산술 연산자
다트에서는 다음과 같은 산술 연산자를 제공한다.
- + : 더하기
- - : 빼기
- * : 곱하기
- / : 나누기 (double 타입 반환)
- ~/ : 몫 (int 타입 반환)
- % : 나머지 (int 타입 반환)
assert() 함수는 계산 결과가 참인지 검사한다.
assert(2 + 3 == 5);
assert(5 / 2 == 2.5);
assert(5 ~/ 2 == 2);
assert(5 % 2 == 1);
참고로 darpad.dev 같은 웹에서는 assert() 함수가 동작하지 않는다.
형 변환 (as 키워드)
형변환(type casting)에는 as 키워드를 사용한다. 다른 타입끼리는 변환이 안 되고 더 상위 개념으로 변환할 수 있다.
int와 double은 모두 num을 구현하는 타입이지만 서로는 관계가 없기 때문에 형변환이 불가능하다.
double c = 30.05;
int d = c as int; // 에러
하지만 int와 double 모두 상위 개념인 num으로 형 변환할 수 있다.
dynamic d = 30.5;
num n = d; // as num; 생략 가능
익명 함수
이름 없는 익명 함수(anonymous function) (무명 함수)도 정의해 사용할 수 있다.
([인수명] { [동작 또는 반환값] }
다음 익명 함수는 number가 짝수면 true를, 홀수면 false를 반환한다.
(number) {
return number % 2 == 0;
}
람다식
다트에서는 람다(lambda) 표현식이라는 함수 표현 방식을 지원한다. => 왼쪽에는 인수명을 작성하고, 오른쪽에는 동작할 코드 또는 반환값을 작성한다.
([인수명]) => [동작 또는 반환값]
위의 무명 함수와 같은 동작을하는 람다식은 아래와 같다.
(number) => number % 2 == 0;
선택 매개변수
함수 정의에서 {}로 감싼 매개변수는 선택적으로 사용할 수 있다. 호출할 때 매개변수명을 값 앞에 써주면 된다. 그래서 이런 매개변수를 '이름 있는 매개변수(Named Praramter)'라고도 부른다.
void something({String name, int age}) { }
void main(){
something(name: '김연아', age: 31);
something(name: '김연아');
something(age: 31);
something();
}
만약 필수 매개변수와 선택 매개변수를 함께 사용하고 싶다면 앞쪽에 필수 매개변수를 먼저 두도록하자.
void something(String name, {int age}) { }
void main(){
something(name: '김연아', age: 31); // ok
something(name: '김연아'); // ok
something(age: 31); // 에러
something(); // 에러
}
선택 매개변수는 기본값을 지정할 수 있다.
void something(String name, {int age = 20}) { }
void main() {
something('김연아', age: 31); // 김연아, 31살
something('김연아'); // 김연아, 20살
}
'Programming > Dart' 카테고리의 다른 글
[Programming/Dart] 비동기 프로그래밍 : futures, async, await (2) | 2020.10.10 |
---|---|
[Programming/Dart] 유용한 기법 (계단식 표기법, 컬렉션 if, 컬렉션 for, null) (0) | 2020.10.06 |
[Programming/Dart] 함수형 프로그래밍 (Functional Programming) (2) | 2020.10.06 |
[Programming/Dart] Collection (0) | 2020.10.06 |
[Programming/Dart] 객체 지향 프로그래밍 (Object-Oriented Programming) (0) | 2020.10.06 |