본문 바로가기
App/Flutter

[Flutter] Dart 언어 기본 문법 Part 1 - 변수 타입별 선언, nullable, final과 const 차이

by Gina Sim 2023. 5. 24.

온라인에서 코드를 바로 실행할 수 있는 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를 사용할 수 없음

 

 

 

반응형

댓글