Today I Learned 6회차(1) - Dart 프로그래밍 기초 1회차
해당 언어에 대해서 새롭게 알게된 사실 또는 기존에 알고 있는 언어들의 문법과 다소 차이가 보이는 부분들, 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가 아니라면).
- 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');
- 가변적인 데이터의 사용을 최소화하여 프로그램을 구성하는 방식
- 함수 내부 로직에서의 연산과 결과 값이 매개 변수에만 의존함
- 이런 형태의 함수를
순수 함수
라고 함
댓글남기기