온라인에서 코드를 바로 실행할 수 있는 DartPad
1. 변수 타입 선언
- 정수 - int
- 실수 - double
- Boolean(true/ false) - bool
- 문자 - String
- 문자도 더하기 가능
String name = 'Hello';
String name2 = 'World';
print(name + ' ' + name2);
print('${name} ${name2}');
print('$name $name2'); // 변수 하나만 하는 경우에는 괄호 필요없지만 함수까지 추가하는 경우에는 괄호 필요함
print('$name.runtimeType ${name.runtimeType} $name');
출력)
Hello World
Hello World
Hello World
Hello.runtimeType String World
- 모든 타입 - var
- 오른쪽 값에 따라 자동으로 변수 타입이 유추 됨
- 변수 타입이 고정돼서 변경할 수 없음
- 모든 타입 - dynamic
- 값을 변경하면서 변수 타입도 변경할 수 있음
2. nullable/ non-nullable 변수
- nullable : null이 될 수 있다
- non-nullable : null이 될 수 없다
- null : 아무런 값도 없다
- 어떤 타입이든 끝에 ?를 붙이면 null까지 들어갈 수 있는 타입으로 선언
- null이 들어갈 수 있는 타입에 !를 붙이면 현재 해당 값은 null이 아니라는 것을 의미할 수 있음
String name = '코드팩토리';
print(name);
//name = null; -> 에러
String? name2 = '블랙핑크';
name2 = null;
print(name2!);
출력)
코드팩토리
null
3. final VS const (+ DateTime 개념)
- 공통점
- 일반적으로 변수를 선언할 때 선언하는 변수 제일 앞에 작성
- 변수를 선언하면 변수값을 변경할 수 없음
- var 키워드를 생략할 수 있음 -> 타입 생략 가능
// 아래 코드 모두 가능
final var name = 'test'
final name = 'test'
const var name = 'test2'
const name = 'test2'
- 차이점
- const는 빌드 타임의 값을 알고 있어야 함
- DateTime
- 시간과 날짜를 저장할 수 있는 데이터 타입
- DateTime.now()를 실행 하는 경우 Run을 시작하는 시점이 아니라 해당 코드가 실행되는 시점의 시간을 반환 함
DateTime now = DateTime.now(); // Run 시점이 아니라 해당 코드가 실행 되는 시점의 시간
final DateTime now1 = DateTime.now();
const DateTime now2 = DateTime.now(); // 에러
- 빌드타임
- 우리가 코드를 작성하고 run을 하면 빌드가 일어나는데, 우리가 작성한 코드를 컴퓨터가 읽을 수 있는 형태인 이진수로 변환하는 것을 의미한다.
- 따라서 빌드타임의 값을 알고 있어야 한다는 것은 코드를 (이진수로)작성하는 순간의 값을 알고 있어야 한다는 것을 의미
=> DateTime.now()의 경우 해당 코드가 실행되는 순간의 시간을 가지고 오기 때문에 코드를 작성하는 순간의 값을 알 수 없어서 const를 사용할 수 없음
반응형
댓글