Today I Learned 6회차(1) - Dart 프로그래밍 기초 1회차

2 분 소요

해당 언어에 대해서 새롭게 알게된 사실 또는 기존에 알고 있는 언어들의 문법과 다소 차이가 보이는 부분들, Dart 언어만의 특성이 보이는 부분을 위주로 요약하고 정리를 진행하려 합니다.

연산자(Operators)

산술 연산자

  • ~/: /는 나누었을 때 나오는 값이 정수든 소수든 상관 없이 그 값을 반환하지만, ~/는 나오는 값의 정수 부분만 반환합니다.
    • 예시
      int five = 5;
      int two = 2;
      print(five ~/ two); // 2
      

타입 체크 연산자

  • as: 타입을 변환 (Type Casting) 할 때 사용해요.
  • is: 특정 타입을 가지고 있는지 판별할 때 사용해요.
    int? a = 2;
    print(a is int); // true
    
    int? b = null;
    print(b is int); // false
    
  • is!: 특정 타입을 가지고 있지 않은지 판별할 때 사용해요.
    int? a = null;
    print(a is! int); // true
    
    int? b = 2;
    print(b is! int); // false
    

타입 체크 연산자

  • ??=: ??= 기준으로 왼쪽에 있는 것이 null 일 때 오른쪽 값을 대입해요.
    int? a = null;
    a ??= 2;
    print(a); // 2
    
    int b = 3;
    b ??= 2;
    print(b); // 3
    

컬렉션(Collections)

Set

중복되지 않은 값들이 묶인 형태

Set<int> numbers = {1, 2, 3, 4, 5};

특징

  • 각각의 요소는 모두 같은 타입이어야 해요.
  • 요소들의 순서가 보장되지 않아요.
    • 그래서 List 와 다르게 Index 라는 개념이 없어요 😅
  • 그래서 Set 은 주로 중복된 값을 제거하고 싶을 때 사용된답니다 !

Map

키 (Key) 와 값 (Value) 이 묶인 하나의 쌍으로 이루어진 형태

Map<String, String> people = {'Alice': 'Teacher', 'Bob': 'Student'};
final people = {'Alice': 'Teacher', 'Bob': 'Student'};
const animals = {'Dog': 3, 'Cat': 5};
  • Map 요소에 변동이 없는 경우에는 final 이나 const 로 선언 가능 !!
  • Dart에서 const와 final의 차이
    • const:
      • 컴파일 타임에 값을 결정하는 완전한 불변성(컴파일 시점에 값이 결정)
      • const로 선언된 리스트나 맵은 내용물을 변경할 수 없어요.
      • 메모리 효율성: 동일한 const 객체가 여러 번 생성될 때, Dart는 단 하나의 객체만 메모리에 생성하고 모든 참조가 그 객체를 가리키도록 최적화해요. 이는 메모리 사용량을 줄여줘요.
    • final:
      • 런타임에 한 번만 값을 할당할 수 있어요.
      • final 변수는 선언과 동시에 초기화하거나, 생성자에서 초기화할 수 있어요.
      • final은 변수가 가리키는 참조 자체를 불변하게 만들어요. 즉, final로 선언된 리스트의 참조를 다른 리스트로 바꿀 수는 없지만, 리스트 내부의 요소는 변경할 수 있어요 (만약 리스트 자체가 const가 아니라면).

열거형(Enumerations)

enum Color { red, green, blue }

특징

enum Color { red, green, blue }

print(Color.red.index); // 0
print(Color.green.index); // 1
print(Color.blue.index); // 2
enum Color { red, green, blue }

var colors = Color.values;
print(colors); // [Color.red, Color.green, Color.blue]
print(colors[1]); // Color.green
  • colors 는 List 타입으로 추론돼요.

함수형 프로그래밍과 Dart

  • 함수의 연속으로 프로그램을 구성하는 방식(메서드 체이닝)
    int number = -12345;
    var result = number.ads().toString().contains('3');
    
  • 가변적인 데이터의 사용을 최소화하여 프로그램을 구성하는 방식
    • 함수 내부 로직에서의 연산과 결과 값이 매개 변수에만 의존함
    • 이런 형태의 함수를 순수 함수라고 함

태그:

카테고리:

업데이트:

댓글남기기