Dart 변수 선언

Byeonggwan Kang·2023년 3월 24일
0

dart, flutter and modes

목록 보기
2/9

Dart의 변수 선언시 키워드에 대해 설명한다.

1. var

지역변수는 var를 사용한다. 초기화 당시 넣은 값의 type을 따른다

  var name = 'hello';
  print(name);

  String name2 = 'hello2';
  print(name2);

2. type 명시

class안의 멤버 변수, property는 타입을 명시해준다.

  String name2 = 'hello2';
  print(name2);

3. dynamic

어떤 자료형이든 될 수 있는 변수는 dynamic 키워드로 선언한다. var를 초기화없이 선언해도 dynamic과 같다. 남용하지 않도록 조심한다.

  dynamic name3;
  name3 = 'hello3';
  if (name3 is String) {
    print(name3);
  }

  name3 = 3;
  if (name3 is int) {
    print('hello$name3');
  }

4. Nullable

Dart는 기본적으로 변수들이 null값을 가질 수 없다. 런타임 에러를 방지할 Null safety를 위한 정책이다. 그래서 null값을 가질 수 있는 변수들은 타입 뒤에 ?를 붙인다.

  String? name4 = 'hello4';
  name4 = null;
  if (name4 == null) {
    // name4.length; 같은 수식을 쓸 수 없어진다!
    print('hello4');
  }
  // name4는 null인데도 런타임 오류는 나지 않는다!
  print(name4?.length);

위와 같이 변수가 null값이면 메소드나 멤버 변수를 불러오지 않고 싶을 때 ?를 붙이며 사용하면 된다. 참고로 맨 아래 명령의 결과는 'null'이다.

반대로 변수에 무조건 null이 아니라는 의미를 부여하고 싶은 경우 이름 뒤에 !를 붙여 사용한다.

5. final

값이 바뀌지 않는 변수는 final 키워드를 사용한다. type 명시가 가능하지만 안 써도 된다.

  final String name5 = 'hello5';
  print(name5);

6. late

선언만 하고 나중에 값을 넣고 싶은 변수에는 late 키워드를 사용한다. 역시 null 값을 방지할 수 있는 기능이다.

  late final String name6;
  name6 = 'hello6';
  print(name6);

7. const

컴파일 전에도 변하지 않을 변수는 const 키워드로 명시하자. final은 런타임 중에 결정될 값에 사용하지만 const는 컴파일 전에 결정된 값에 사용한다.

  const name7 = 'hello7';
  print(name7);

0개의 댓글