본문 바로가기
다트(Dart) 언어 강좌

다트의 변수와 데이터 타입 완벽 가이드를 알아보자

by everythingdev 2024. 7. 23.
반응형

다트의 변수와 데이터 타입 완벽 가이드를 알아보자

  • 플러터를 시작하기 전 다트(Dart) 언어의 개념에 대해 정리를 해보고자 합니다.
  • 다트(Dart) 언어 개념 정리 포스팅 후 플러터(Flutter) 개념 정리로 넘어갈 예정입니다.
  • 플러터(Flutter) 개념 정리 후 실습이 시작 된다고 보시면 될 것 같습니다.

소개

  • 다트(Dart)는 구글이 개발한 프로그래밍 언어로, 특히 플러터(Flutter) 프레임워크와 함께 사용되면서 모바일 및 웹 애플리케이션 개발에 널리 사용되고 있습니다.
  • 다트 언어의 핵심 요소 중 하나는 변수와 데이터 타입입니다.
  • 이번 포스팅에서는 다트의 변수 선언 방법과 다양한 데이터 타입에 대해 상세히 알아보겠습니다.
  • 초보자부터 중급 개발자까지 모두에게 유용한 정보를 제공하는 것이 이 가이드의 목표입니다.

변수 선언

  • 다트에서 변수를 선언하는 방법은 여러 가지가 있습니다. 각 방법의 특징과 사용 시기를 살펴보겠습니다.

var 키워드

  • var 키워드는 타입 추론을 사용하여 변수를 선언합니다. 컴파일러가 초기값을 기반으로 변수의 타입을 자동으로 결정합니다.
var name = "John Doe";  // String 타입으로 추론됨
var age = 30;  // int 타입으로 추론됨
  • var는 지역 변수를 선언할 때 주로 사용됩니다. 코드의 가독성을 높이고 불필요한 타입 명시를 줄일 수 있습니다.

명시적 타입 선언

  • 변수의 타입을 명시적으로 선언할 수도 있습니다. 이는 코드의 의도를 명확히 하고 싶을 때 유용합니다.
String name = "Jane Smith";
int age = 25;
double height = 1.75;
  • 명시적 타입 선언은 API를 설계하거나 public 메소드의 매개변수와 반환 타입을 정의할 때 특히 중요합니다.

final 키워드

  • final 키워드는 한 번만 할당할 수 있는 변수를 선언할 때 사용합니다. 런타임 시 값이 결정되며, 한 번 할당된 후에는 변경할 수 없습니다.
final String country = "Korea";
final population = 51000000;  // 타입 추론 사용
  • final은 변수의 값이 프로그램 실행 중에 변경되지 않아야 할 때 사용합니다. 예를 들어, 설정값이나 상수와 같은 경우에 적합합니다.

const 키워드

  • const 키워드는 컴파일 타임 상수를 선언할 때 사용합니다. 값이 컴파일 시점에 결정되어야 하며, 이후 변경할 수 없습니다.
const PI = 3.14159;
const List<int> PRIME_NUMBERS = [2, 3, 5, 7, 11];
  • const는 앱 전체에서 사용되는 고정된 값, 예를 들어 수학적 상수나 설정값 등을 정의할 때 사용합니다.

다트의 기본 데이터 타입

  • 다트는 다양한 기본 데이터 타입을 제공합니다. 각 타입의 특징과 사용 예를 살펴보겠습니다.

숫자형 (Numbers)

  • 다트에는 두 가지 숫자 타입이 있습니다: intdouble.

int

  • int는 64비트 정수를 나타냅니다. 소수점이 없는 숫자를 표현할 때 사용합니다.
int age = 30;
int hexValue = 0xDEADBEEF;

double

  • double은 64비트 부동소수점 숫자를 나타냅니다. 소수점이 있는 숫자를 표현할 때 사용합니다.
double pi = 3.14159;
double exponentValue = 1.42e5;

문자열 (String)

  • String 타입은 UTF-16 코드 단위의 시퀀스를 나타냅니다. 작은따옴표나 큰따옴표를 사용하여 문자열을 생성할 수 있습니다.
String name = 'John Doe';
String message = "Hello, Dart!";
  • 다트에서는 문자열 보간(String interpolation)을 지원합니다. $ 기호를 사용하여 문자열 내에 변수 값을 삽입할 수 있습니다.
String name = 'Alice';
print('Hello, $name!');  // 출력: Hello, Alice!

불리언 (bool)

  • bool 타입은 참(true)과 거짓(false) 두 가지 값만을 가질 수 있습니다.
bool isActive = true;
bool isCompleted = false;

리스트 (List)

  • List는 순서가 있는 객체의 집합입니다. 다트에서는 배열도 List 객체로 취급됩니다.
List<int> numbers = [1, 2, 3, 4, 5];
List<String> fruits = ['apple', 'banana', 'orange'];
  • 제네릭을 사용하여 리스트의 요소 타입을 지정할 수 있습니다.

맵 (Map)

  • Map은 키-값 쌍의 집합입니다. 각 키는 고유해야 하며, 값은 중복될 수 있습니다.
Map<String, int> ages = {
  'John': 30,
  'Jane': 25,
  'Bob': 40
};

집합 (Set)

  • Set은 고유한 항목의 순서 없는 집합입니다. 중복된 요소를 허용하지 않습니다.
Set<int> uniqueNumbers = {1, 2, 3, 4, 5};

특수 데이터 타입

  • 다트는 몇 가지 특수한 데이터 타입도 제공합니다.

dynamic

  • dynamic 타입은 모든 타입의 값을 저장할 수 있습니다. 타입 검사를 런타임으로 미루고 싶을 때 사용합니다.
dynamic value = 42;
value = "Now I'm a string";
value = [1, 2, 3];
  • dynamic은 유연성을 제공하지만, 타입 안정성을 해칠 수 있으므로 신중하게 사용해야 합니다.

Object

  • Object는 다트의 모든 객체의 최상위 클래스입니다. dynamic과 달리 Object로 선언된 변수는 모든 타입의 객체를 참조할 수 있지만, 해당 객체의 구체적인 메소드나 프로퍼티에 접근하려면 명시적인 타입 캐스팅이 필요합니다.
Object someObject = 'Hello';
print(someObject.length);  // 오류: Object에는 length 속성이 없음
print((someObject as String).length);  // 정상 작동

Null 안정성과 Nullable 타입

  • 다트 2.12 버전부터 도입된 Null 안정성(Null Safety) 기능은 널 참조 오류를 방지하는 데 도움을 줍니다. 기본적으로 모든 변수는 non-nullable입니다. nullable 타입을 사용하려면 타입 뒤에 ?를 붙입니다.
String nonNullableString = "This can't be null";
String? nullableString = null;  // 이 변수는 null일 수 있음

타입 변환

  • 다트에서는 다양한 방법으로 타입 변환을 수행할 수 있습니다.

암시적 변환

  • 다트는 일부 상황에서 암시적 타입 변환을 수행합니다. 예를 들어, int는 필요할 때 자동으로 double로 변환됩니다.
int intValue = 5;
double doubleValue = intValue.toDouble();  // 명시적 변환
double anotherDouble = intValue + 0.5;  // 암시적 변환

명시적 변환

  • 명시적 타입 변환은 변환 메소드나 as 키워드를 사용하여 수행합니다.
String numberString = "42";
int number = int.parse(numberString);  // String을 int로 변환

dynamic someValue = "Hello";
String definitelyString = someValue as String;  // dynamic을 String으로 캐스팅

결론

  • 다트의 변수와 데이터 타입 시스템은 강력하면서도 유연합니다. 타입 안정성을 제공하면서도 개발자의 생산성을 높이는 데 도움을 줍니다. var를 사용한 타입 추론, 명시적 타입 선언, finalconst를 이용한 불변성 관리 등 다양한 옵션을 통해 상황에 맞는 최적의 코드를 작성할 수 있습니다.
  • 기본 데이터 타입부터 List, Map, Set 등의 컬렉션 타입, 그리고 dynamicObject 같은 특수 타입까지, 다트는 다양한 프로그래밍 요구사항을 충족시킬 수 있는 풍부한 타입 시스템을 제공합니다. Null 안정성 기능의 도입으로 더욱 안정적인 코드 작성이 가능해졌습니다.
  • 이러한 다트의 특성을 잘 이해하고 활용한다면, 더욱 효율적이고 안전한 프로그램을 개발할 수 있을 것입니다. 변수와 데이터 타입은 프로그래밍의 기초이자 핵심입니다. 이를 탄탄히 다진다면, 복잡한 애플리케이션 개발에서도 자신감을 가지고 임할 수 있을 것입니다.

맺음말

  • 이번 포스팅에서는 다트의 변수와 데이터 타입 완벽 가이드에 대해 알아보았습니다.
  • 다음 포스팅에서는 다트의 연산자와 표현식에 대해 알아보고자 합니다.
반응형