[Flutter] Dart 변수타입 이란?

김근재·2024년 3월 26일

[Flutter] 시리즈 

목록 보기
2/10
post-thumbnail

Dart 변수란?

Dart의 기본타입에는
자주 사용되는 변수는

int : 정수
bool : true 또는 false 을 나타냄
double : 실수
String : 문자형

var 변수란?

var 타입은 선언할때 그 타입으로 고정(fix)된다.
즉, 데이터 타입이 선언 되는 즉시 결정되고 변경이 불가하다.

ex) var v1 = '그니';  //선언 
    v1= 5;     //에러 

모든 프로그래밍 언어는 위에서부터 아래로 출력하기 때문에
var v1= '그니' 라고 첫째줄에서 선언하고 변수 v1은 String으로 고정 되었으므로
이후에 String 값 이외의 변수 값을 넣을 수 없음.

dynamic 변수란?

var 타입과 달리 dynamic은 선언 당시의 데이터 타입이 고정적이지 않고 유동적이다.

 dynamic k1 = '그니'; 

 k1 = '2';  //에러가 나지 않음

List 변수란?

-List 변수는 다른 프로그래밍 언어에서 배열(Array)로 불리우는 타입의 변수이다.

선언방식은 아래와 같이 []로 해준다.

var List = [그니,자니,지니,고니];

선언 후에 값을 변경하지 못하게 하려면 선언 시, const 선언을 해준다.

var List = const[그니,자니,지니,고니];

List 변수에 대한 제어는 아래와 같이 이루어진다.

List를 출력할 때 순서대로 출력
print(List);

List에 몇개가 있는지 그에 대한 길이를 출력할때 (4개면4출력,8개면8출력)
print(List.length);

List의 선택된 값을 출력할 때, List[0]은 그니가 출력되고 List[3]은 고니가 출력됨
print(List[0]); //그니 출력
print(List[3]); //고니 출력

List에 값을 추가 하고 싶을때
List.add(주니);

//List에서 특정값을 제거하고 싶을 때
List.remove(그니);

List에서 특정 위치의 값을 제거하고자 할때, [0]은 List의 첫번째 값인 그니값이 제거
List.removeAt(0);

Map 변수란?

1. Map 변수를 생성하기 위해서는 key,Value값이 필요하다.

각 값의 변수 타입을 적어주면 된다.

Map<key타입, Value타입> 변수명 = {
key1 : Value1,
key2 : Value2,
...
};

예시로 한번 알아보자

  Map<String, String> dictionary = {
  
   'Harry Potter' : '해리포터',
   'Ron Weasley'  : '론 위즐리',
   'Hermione Granger' : '헤르미온느 그레인저',
   };
   print(dicionary);

출력 문 : {Harry Potter : 해리포터, Ron Weasley: 론 위즐리, Hermione Granger: 헤르미온느 그레인저}


Map<String, bool> isHarryPotter ={
  'Harry Potter' : true,
  'Ron Weasley' : true,
  'Ironman'    : false,
  };
  
  print(isHarryPotter);

출력문: {Harry Potter: true, Ron Weasley:true, Ironman: false}

2. Map에 값 추가

1) addAll을 활용하여 괄호 안의 값을 한번에 추가할 수 있음

 변수명.addAll({
 	  key:Value,
      });
예시 isHarryPotter.addAll({
    'Spiderman' : false,
    });
    print(isHarryPotter);

출력문: {Harry Potter:true, Ron Weasley: true, Ironman: false, Spiderman: false}

2) 새로운 key값에 Value 추가

변수명['새로운 key 값'] = 새로운 Value;

  isHarryPotter['Hulk'] = false;
  print(isHarryPotter);
  

출력문: {Harry Potter:true, Ron Weasley: true, Ironman: false, Spiderman: false, Hulk: false}

3) Map의 값 변경

변수명 ['변경할 key 값 '] = 새로운 Value;

isHarryPotter['Spiderman']= true;
print(isHarryPotter);

출력문: {Harry Potter:true, Ron Weasley: true, Ironman: false, Spiderman: true, Hulk: false}

4) Map의 값 제거하기

변수명.remove('삭제할 key 값');

isHarryPotter.remove('Spiderman');
 print(isHarryPotter);

출력문: {Harry Potter:true, Ron Weasley: true, Ironman: false, Hulk: false}

5) Map의 key 값 또는 Value값만 모아 보기

변수명.keys;
변수명.Values;

print(isHarryPotter.keys);

출력문: (Harry Potter, Ron Weasley, Ironman, Hulk)

    
print(isHarryPotter.Values);

출력문: (true,true,false,false)

final와 const 변수란?

var 대신 final 키워드를 사용하여 변수를 만들게 되면 이 변수는 업데이트 할 수 없습니다. 자바스크립트에서 사용하는 const와 비슷한 역할을 합니다.

1. final 변수 사용 방법

final 키워드를 이용하여 변수를 선언합니다.

final name = '그니';
print(name);

final 키워드를 이용하여 선언한 변수는 업데이트 될 수 없습니다.

final name = '그니';
name = '지니';   //에러 발생 
print (name); 

Dart에서 final 변수와 const 변수 비교

final 변수: 선언과 동시에 값을 할당하면 이후에는 값을 변경할 수 없습니다.

const 변수 : 선언과 동시에 값을 할당하면 이후에는 값을 변경할 수 없으며, 컴파일 타임에 값을 계산합니다.

--Dart에서는 final 변수는 프로그램의 안정성을 높일 수 있고
const 변수는 컴파일 타임에 값을 계산하여 런타임 성능을 향상시킨다.

Set 변수란?

  • 중복값이 들어갈 수 없음( 중복 자동 처리)

1. Set생성

final Set<변수타입 > 변수명 ={
값1,
값2,
값3,
...
};

final Set<String> names = {
  '그니'
  '지니'
  '주니'
  };
  print(name);

출력문: {그니,지니,주니}

2. Set에 값 추가

변수명.add(값);

names.add('혀니');
print(names);

출력문: {그니,지니,주니,혀니}

3. Set의 값 제거


변수명,remove('그니');
print(names);

출력문: {지니,주니,혀니}

4.Set에 값이 존재하는지 확인

변수명.contains(확인하고자 하는 값);
print (names.contains('혀니'));

출력문: true

Null Safety란?

null은 빈상자이다.

0이 아니라 아무것도 존재하지 않는 상태라는 것이다.
쉽게 말해 휴지를 다쓰고 휴지곽만 있는 상태는 0 이지만
휴지곽도 없는 상태가 바로 null이다.

Null Safety 문법

데이터 타입 뒤에 붙이는 '?'

String name;

String? name;

Dart는 기본적으로 위와 같이 선언하면, Null을 허용하지 않는 변수로 본다.
쉽게 설명하면 다음과 같다.

String name;
Non-nullable variable. Null 허용하지 않고, 값이 꼭 들어가 있어야한다.
값을 넣어주지 않고 변수를 사용하면 Null 에러 발생

String? name;
Nullable variable. Null을 허용하고, 선언하는 순간 바로 Null이 초기값으로 들어간다.

  1. nullable - null이 될 수 있다.
  2. non-nullable - null이 될 수 없다.
  3. null- 아무런 값도 있지 않다.
ex) String name ='그니';
	print(name);       
    //name = null;

-어떠한 데이터 타입 뒤에도 '?'만 들어가면 nullable, null이 될 수도 있는 상태를 의미한다.
-변수타입에 ?가 들어가 있는 변수명 뒤에 느낌표 '!'가 들어가면, 절대로 null이 아니다 라는 것을 의미한다는 것이다.

ex) String? hello = '그니'; 
 		print(hello!) 이면 
      hello는 절대로 null이 아니다 라는 의미이다. 

-즉, '?'가 선행되어야 하고, 그 다음'?'가 붙어있는 변수 뒤에 '!'가 따라온다.

  
  null관련 예시를 한가지 알아보자 
  
 double? number = 4.0;              1)
print(number); --> 4.0

number = 2.0;                      2)
print(number); --> 2.0

number = null;                      3)
print(number); --> null;


number ??= 3.0;                     4)
print(number); --> 3.0

'??' 라는 연산자는 왼쪽(변수)에 있는 값이 null이면 오른쪽 값을 넣어서 대입한다.
즉, 3번에서 number에 null값을 넣고, 확인해보면 현재 상태는 null값이니까
number ??=3.0 이라고 선언하면 3.0으로 값이 대입되기에 출력시 3.0이 나온다.

이상으로 Dart변수에 대해서 알아보았습니다.

profile
새로운 도전에 끊임없이 도전하는 개발자

0개의 댓글